桥接模式
将抽象部分与它的实现部分分离,使它们可以独立地变化。
什么叫抽象与它的实现分离,这并不是说,让抽象类与其派生类分离,因为这没有任何意义。实现指的是抽象类和它的派生类用来实现自己的对象。
‘将抽象部分与它的实现部分分离’:实现系统可能有多角度分类,每一种分类都有可能变化,那么就把这种多角度分离出来让它们独立变化,减少它们之间的耦合。
示例代码
//桥接模式
//实现的抽象接口
class Implementor
{
public:
virtual void Operation() = 0;
};
//具体实现类A
class ConcreteImplementorA:public Implementor
{
public:
void Operation(){ cout << "具体实现A的方法执行" << endl; }
};
//具体实现类B
class ConcrtetImplementorB :public Implementor
{
public:
void Operation(){ cout << "具体实现B的方法执行" << endl; }
};
//抽象类
class Abstraction
{
public:
void SetImplementor(Implementor *implementor){ m_implementor = implementor; }
virtual void Operation(){ m_implementor->Operation(); }
protected:
Implementor *m_implementor;
};
class RefindAbstraction :public Abstraction
{
public:
void Operation(){ m_implementor->Operation(); }
};
int main()
{
Abstraction *ab = new RefindAbstraction;
ab->SetImplementor(new ConcreteImplementorA);
ab->Operation();
ab->SetImplementor(new ConcrtetImplementorB);
ab->Operation();
system("pause");
return 0;
}