//Bridge模式
class Implementor
{
public:
Implementor(){}
virtual ~Implementor(){}
public:
virtual void OperationImpl() {}
};
class Abstraction
{
public:
Abstraction(Implementor* pImplementor){m_pImplementor=pImplementor;}
virtual ~Abstraction(){}
public:
virtual void Operation(){m_pImplementor->OperationImpl();}
protected:
Implementor* m_pImplementor;
};
class AbstractionA:public Abstraction
{
public:
AbstractionA(Implementor* pImplementor):Abstraction(pImplementor){}
~AbstractionA(){}
public:
void Operation(){printf("this is a AbstractionA!\n");m_pImplementor->OperationImpl();}
};
class AbstractionB:public Abstraction
{
public:
AbstractionB(Implementor* pImplementor):Abstraction(pImplementor){}
~AbstractionB(){}
public:
void Operation(){printf("this is a AbstractionB!\n");m_pImplementor->OperationImpl();}
};
class ImplementorA:public Implementor
{
public:
ImplementorA(){}
virtual ~ImplementorA(){}
public:
void OperationImpl() {printf("this is a ImplementorA!\n");}
};
class ImplementorB:public Implementor
{
public:
ImplementorB(){}
virtual ~ImplementorB(){}
public:
void OperationImpl() {printf("this is a ImplementorB!\n");}
};
//Bridge模式
int _tmain(int argc, _TCHAR* argv[])
{
//Bridge模式
Implementor *ia=new ImplementorA;
Implementor *ib=new ImplementorB;
Abstraction *aaa=new AbstractionA(ia);
aaa->Operation();
Abstraction *aab=new AbstractionA(ib);
aab->Operation();
delete aaa;
delete aab;
Abstraction *aba=new AbstractionB(ia);
aba->Operation();
Abstraction *abb=new AbstractionB(ib);
abb->Operation();
delete ia;
delete ib;
delete aba;
delete abb;
//Bridge模式
getchar();
return 0;
}
转载于:https://my.oschina.net/u/221120/blog/888593