设计模式 – 桥梁模式理解

栏目: 后端 · 发布时间: 5年前

内容简介:我在某种程度上理解桥梁模式.我理解接口和实现的分离.它使用类似插件的实现者类,它保存派生类实现的实际逻辑.但有人可以解释它如何允许接口和派生独立发展?如果我想在接口中添加一个新方法,则必须在派生类中实现它,这将修改它.其次,必须修改客户端代码以在需要新对象时设置新的实现者.

我在某种程度上理解桥梁模式.我理解接口和实现的分离.它使用类似插件的实现者类,它保存派生类实现的实际逻辑.

但有人可以解释它如何允许接口和派生独立发展?如果我想在接口中添加一个新方法,则必须在派生类中实现它,这将修改它.

其次,必须修改客户端代码以在需要新对象时设置新的实现者.

是的,Bridge模式的目的是将抽象(即接口)与实现分离,让它们独立变化.在实践中,想法是使用两个单独的层次结构而不是经典的单个层次结构.

我们举个例子吧.假设您有一个Window抽象,并且您需要为每个支持的平台创建一个专门用于Window的IconWindow子类.

使用单个层次结构,您将获得:

Window
                       |--------------...
                   IconWindow
                       |
   -----------------------------------------------...
   |                   |                   |
XIconWindow       MSIconWindow      OSXIconWindow

这种结构非常不方便,因为:

>如果要添加专门用于Window的新子类(例如,BitmapWindow),则必须为每个受支持的平台(即本示例中的三个子类)创建子类.

>如果要添加支持的平台,则必须为每个现有的特化添加新的子类.

因此,最好通过以下方式解耦两个层次结构:

imp
      Window--------------------------> WindowImp
         |                                  |
    -----------....            ---------------------------------
    |                          |              |                |
IconWindow                XWindowImp      MSWindowImp    OSXWindowImp

Window和WindowImp是接口.

IconWindow使用Window提供的方法.反过来,窗口调用imp上的相关方法.

Window和WindowImp之间的关系称为Bridge.

例:

IconWindow :: DrawBorder()使用Window :: DrawRect(),它调用imp-> DevDrawLine(),它在WindowImp中声明并在具体子类中定义(例如,在类XWindowImp中).

我的建议是阅读包含上述示例的书:设计模式 – 可重用面向对象软件的元素“( http://en.wikipedia.org/wiki/Design_Patterns ).

翻译自:https://stackoverflow.com/questions/17015997/bridge-pattern-understanding


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

1024·人与机器共同进化

1024·人与机器共同进化

东西文库 / 译言·东西文库/电子工业出版社 / 2013-12-20 / 55元

《1024》:国内第一本专注于科技文化的mook。 本期创刊号将目光定焦在“人与机器”这个超热点领域。 如果把机器获得思维能力看作是一种进化, 那人类具备不朽之躯同样也是一种进化。 这是一个野心勃勃但又充满不确定性的未来。 在我们一厢情愿地猜测机器将在不远的将来赶超自己而惶惶不可终日时,人类其实还有一个机会——变得更像机器。这并非科幻小说,而是正在发生的现实。人类创造......一起来看看 《1024·人与机器共同进化》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具