一、功能
将抽象部分与它的实现部分分离,使它们都可以独立地变化。
二、结构图
三、示例代码:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 class Implementor 2 { 3 public: 4 virtual void OperationImp() = 0 ; 5 } ; 6 7 class ConcreteImplementorA : public Implementor 8 { 9 public: 10 virtual void OperationImp() {} 11 } ; 12 13 class ConcreteImplementorB : public Implementor 14 { 15 public: 16 virtual void OperationImp() {} 17 } ; 18 19 class Abstraction 20 { 21 public: 22 void Operation(Implementor* imp) 23 { 24 assert(imp) ; 25 imp->OperationImp() ; 26 } 27 } ; 28 29 客户端代码: 30 Abstraction obj ; 31 Implementor *impa = new ConcreteImplementorA() ; 32 Implementor *impb = new ConcreteImplementorB() ; 33 obj.Operation(impa) ; //第一种实现方法 34 obj.Operation(impb) ; //第二种实现方法
四、实例
(1)创建可以在X Window System和IBM的Presentation Manager系统中都可以使用的窗口。(书上的例子)
Bridge的魅力在于抽象和实现之间是松散的关系,它们之间可以进行随意组合。如上图中,就有IconWindow+XWindowImp、TransientWindow+XWindowImp、IconWindow+PMWindowImp、TransientWindow+PMWindowImp四种组合。