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

转载于:https://www.cnblogs.com/criticalsection/p/5715372.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值