设计模式之五:Bridge(转)

一、功能 
  将抽象部分与它的实现部分分离,使它们都可以独立地变化。

  二、结构图

  三、示例代码:

 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) ; //第二种实现方法 
View Code

四、实例

  (1)创建可以在X Window System和IBM的Presentation Manager系统中都可以使用的窗口。(书上的例子)

 

  Bridge的魅力在于抽象和实现之间是松散的关系,它们之间可以进行随意组合。如上图中,就有IconWindow+XWindowImp、TransientWindow+XWindowImp、IconWindow+PMWindowImp、TransientWindow+PMWindowImp四种组合。

原文地址:https://www.cnblogs.com/wangzhijun/p/3464598.html