桥接模式的主要思想是通过组合来代替继承,从未避免类继承的过分膨胀。
将抽象部分与它的实现部分分离,使他们可以独立地变化。
C++代码:
class AbstractionImp
{
public:
virtual ~AbstractionImp(){}
virtual void Operation() = 0;
};
class ConcreteAbstractionImpA : public AbstractionImp
{
public:
virtual void Operation(){cout<<"impA"<<endl;}
};
class ConcreteAbstractionImpB : public AbstractionImp
{
public:
virtual void Operation(){cout<<"impB"<<endl;}
};
class Abstraction
{
public:
virtual void Operator() = 0;
virtual ~Abstraction(){}
};
class RefinedAbstraction : public Abstraction
{
public:
RefinedAbstraction(AbstractionImp* imp)
:m_imp(imp){}
void Operator(){m_imp->Operation();}
private:
AbstractionImp* m_imp;
};
int _tmain(int argc, _TCHAR* argv[])
{
AbstractionImp* impA = new ConcreteAbstractionImpA;
Abstraction* abs = new RefinedAbstraction(impA);
abs->Operator();
delete impA;
delete abs;
system("pause");
return 0;
}