williambirkin

恭喜发财!

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

适配模式与桥接模式的区别和联系
两种模式的区别在于使用场合不同,适配器模式主要解决两个已有接口间的匹配问题。这种情况下被适配的接口的实现往往是一个黑匣子。我们不想,也不能改变这个接口及其实现。同时也不能控制其演化,只要相关的对象能与系统定义的接口协同工作即可。适配器模式经常用在与第三方产品的功能集成上,采用该模式适应新类型的增加的方式是开发针对这个类的适配器。



图1 采用适配器模式的扩展

桥接模式则不同,参与桥接的接口是稳定的,用户可以扩展和修改桥接种的类,但是不能改变接口。桥接模式通过接口继承或者类继承实现功能的扩展。

按照GOF的说法,桥接模式和适配器模式用于设计的不同阶段,桥接模式用于设计的前期,即在设计类的时候将雷规划为逻辑和实现两大类,使他们可以分别进行演化;而适配器模式用于设计完成之后,当发现完成的类无法协同工作时,可以采用适配器模式
然而,很多情况下载设计初期就要考虑适配器模式的使用,如涉及大量第三方应用接口的情况。



图2 采用桥接模式的扩展

适配器模式与桥接模式的联合
这种情况经常出现在需要其他系统提供实现方法时,一个典型的例子是工业控制中的数据采集。不同工控厂家提供的底层数据采集接口通常不同。,因此在做上层软件设计师无法预知可能遇到的任何接口。为此需要定义一个通用的采集接口,然后针对据体的数据采集系统开发相应的适配器。数据存储需要调用数据采集借口获得数据,而火速据可以保存到关系数据库、实施数据库或者文件中。数据存储接口和数据采集结构构成了桥接。



图3 桥接模式和适配器模式联合

同样的结构也经常出现在报表的相关应用中,报表本身结构和报表输出完全可以分开。



图4 数据采集系统中的桥接模式与适配器模式

如图所以,报表输出可以单独抽象出来与报表的具体形式分开。但报表输出又依赖于具体的输出形式,如果需要输出为PDF格式,则需要调用与PDF相关的API,而这是设计所无法控制的,因此这里要使用适配器模式。



图5 报表输出系统中的桥接模式与适配器模式

适配器模式与外观模式的关系
适配器模式与外观模式有些相似,都是对现存系统的封装。但这两种模式的意图完全不同。前者使现存系统与正在设计的系统协同工作,而后者则为现存系统提供一个更为方便的访问接口。简单的说,适配器模式为事后设计,而外观模式则必须事前设计。总之,适配器模式没有引入新的接口,而外观模式则定义了一个新的接口。



图6 系统演化过程中的外观模式

posted on 2007-01-23 00:38  williambirkin  阅读(659)  评论(0编辑  收藏  举报