zoukankan      html  css  js  c++  java
  • 设计模式之五: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四种组合。

  • 相关阅读:
    Mysql 去重
    深入理解ob_flush和flush的区别
    Yii2 基础模板前后台登录分离
    Yii2 登录报错
    使用 php 内部web服务器
    SQL 分组后,获取每组中的最大值对应的数据
    跨域访问解决方案
    Spring Boot对静态资源的映射规则
    Spring Boot项目的探究
    Spring Boot项目的不同启动方式
  • 原文地址:https://www.cnblogs.com/wangzhijun/p/3464598.html
Copyright © 2011-2022 走看看