现在的位置: 首页 > 综合 > 正文

c++设计模式(2)-Bridge

2013年06月01日 ⁄ 综合 ⁄ 共 1200字 ⁄ 字号 评论关闭
一、功能

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

二、结构图

三、示例代码

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四种组合。

抱歉!评论已关闭.