写法跟其他模式类型,就因为理解的含义不同?
一个继承抽象基类,一个继承实现基类,抽象类里面有个实现类的指针
bridge.h
#ifndef _BRIDGE_H
#define _BRIDGE_H
#include <iostream>
using namespace std;
class AbstractionImp
{
public:
virtual ~AbstractionImp() {}
virtual void Operation()=0;
protected:
AbstractionImp() {}
};
class RealAbstractionImp : public AbstractionImp
{
public:
RealAbstractionImp() {};
virtual ~RealAbstractionImp() {};
void Operation() {
cout << "RealAbstractionImp" << endl;
}
};
class Abstraction
{
public:
virtual ~Abstraction() {};
virtual void Operation()=0;
protected:
Abstraction() {}
};
class RealAbstraction : public Abstraction
{
public:
RealAbstraction(AbstractionImp* imp) : _imp(imp) {}
~RealAbstraction() {}
void Operation() {
_imp->Operation();
}
private:
AbstractionImp* _imp;
};
#endif // _BRIDGE_H
bridge.cpp
#include "bridge.h"
int main()
{
AbstractionImp* imp = new RealAbstractionImp;
Abstraction* action = new RealAbstraction(imp);
action->Operation();
return 0;
}
编译:make bridge
网友评论