一、功能
将抽象部分与它的实现部分分离,使它们都可以独立地变化。
二、结构图
三、示例代码
namespace DesignPattern_Bridge { // class Implementor class Implementor { public: virtual void OperationImp() = 0 ; } ;
// class ConcreteImplementorA class ConcreteImplementorA : public Implementor { public: virtual void OperationImp() {} } ;
// class ConcreteImplementorB class ConcreteImplementorB : public Implementor { public: virtual void OperationImp() {} } ;
// class Abstraction class Abstraction { public: void Operation(Implementor* imp) { assert(imp) ; imp->OperationImp() ; } } ; }
客户端代码: { using namespace DesignPattern_Bridge ;
Abstraction obj ; Implementor *impa = new ConcreteImplementorA() ; Implementor *impb = new ConcreteImplementorB() ; obj.Operation(impa) ; //第一种实现方法 obj.Operation(impb) ; //第二种实现方法 } |
四、实例
(1)创建可以在X Window System和IBM的Presentation Manager系统中都可以使用的窗口。(书上的例子)
Bridge的魅力在于抽象和实现之间是松散的关系,它们之间可以进行随意组合。如上图中,就有IconWindow+XWindowImp、TransientWindow+XWindowImp、IconWindow+PMWindowImp、TransientWindow+PMWindowImp四种组合。