• bridge


    1 意图:将抽象部分与实现部分分离,使得它们都可以独立地变化

    2 别名:Handle/Body

    3 动机:客户在创建窗口时应该不涉及到具体实现部分。仅仅是窗口的实现部分依赖于应用运行的平台。

               客户代码在创建窗口时,就不应涉及到特定平台。

              接口  实现(Imp)

    4 适用性:

      . 不希望在抽象和实现部分之间有一个固定的绑定关系。在运行时刻,实现部分可以被选择或切换。

      . 类的抽象以及它的实现部分可以通过生成子类的方法加以扩充,可以对不同的接口和实现部分进行组合,分别对它们进行扩充。

      . 对一个抽象的实现部分的修改应该对客户不产生影响,即客户代码不必重新编译

      . 对客户完全隐藏抽象的实现部分。C++中,类的表示在类接口中是可见的

      . 这种类层次结构成为嵌套的普化

      . 多个对象间共享实现,对客户透明

    5 参与者:

      . Abstraction:

        定义抽象类的接口,维护一个指向Implementor对象的指针。

      . RefinedAbstraction:

        扩充由Abstraction定义的接口

      . Implementor:

        定义实现类的接口,该接口不一定要与Abstraction接口完全一致,实际上二者可以完全不同。

        Implementor提供基本操作,Abstraction定义了基于这些基本操作的较高层次的操作。

      . ConcreteImplementor:实现Implementor接口并定义它的具体实现

    6 协作:

       Abstraction将client的请求转发给它的Implementor对象。

    7 效果:

       有点:

       1)分离接口与其实现部分

           一个接口的实现未必绑定在一个接口上。抽象类的实现可以在运行时刻进行配置,一个对象设置在运行时刻改变它的实现。

           有助于降低对实现部分编译时刻的依赖。改变一个实现类时,不需要重新编译Abstraction和客户程序。

           接口与实现分离,有助于分层,从而产生更好的结构化系统。系统的高层仅需要知道Abstraction和Implementor

      2)提高可扩充性

          可以独立地Abstraction和Implementor的层次进行扩充

      3)实现细节对客户透明:

        

    8 实现:

       注意:

       1)仅有一个Implementor

       2)创建正确的Implementor对象 可以引入一个factory对象,由它创建具体的实现对象

       3)共享Implementor:Handle/Body Body有一个引用计数器,Handle对它进行增减操作。

       4)采用多重继承机制:将抽象接口和它的实现结合起来。 静态继承,所以并非真正的bridge

    9 相关模式:

       . 抽象厂可以创建和配置一个Bridge模式

       . Adapter帮助无关的类协同工作通常系统设计完成后才会被使用。Bridge在设计开始前就使用,抽象接口和实现部分独立改变。

  • 相关阅读:
    第二章 Java程序设计环境
    第一章 Java程序设计概述
    (五)Java工程化--Jenkins
    (二)Java工程化--Maven实践
    (四)Java工程化--Git基础
    (三)Java工程化--Git起步
    (一)Java工程化--Maven基础
    codeblocks 中文编码问题
    win10安装virtualbox发生严重错误
    利用ssh传输文件
  • 原文地址:https://www.cnblogs.com/criticalsection/p/5715372.html
Copyright © 2020-2023  润新知