zoukankan      html  css  js  c++  java
  • 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在设计开始前就使用,抽象接口和实现部分独立改变。

  • 相关阅读:
    Flutter采坑之路 Run Configuration error:broken configuration due to unavailable
    Android24以上拍照代码
    android Studio 出现:Unable to resolve dependency for ':app@debug/compileClasspath'
    Android Studio 使用本地gradle配置详解
    windows server2008 IIS搭建网站简易教程(阿里云)
    FileProvider 添加二级目录
    Android中如何解决editText一进入activity就自动获取焦点的bug
    关于AndroidStudio 经常弹出TortoiseSVN 同步的解决办法
    Awesome-VR
    Magento2 常见错误 ----- 定期更新
  • 原文地址:https://www.cnblogs.com/criticalsection/p/5715372.html
Copyright © 2011-2022 走看看