上一篇:Bjarne:为什么一个空类的大小不为0? >>
.Net中适配器、桥接与外观三模式的关系
| 天极软件专题专区精选 到天极软件“读编交流区”畅所欲言 | |||
| Google专区 | POPO专区 | QQ专区 QQ挂机 | 了解Web2.0 |
| Flash MX 视频教程 | Photoshop视频教程 | 网页设计视频教程 | 照片处理数字暗房 |
| PPT动画演示教程 | Excel动画教程集 | Word动画演示教程 | Windows Vista专区 |
| 特洛伊木马专区 | 黑客知识教程专区 | 防火墙应用专区 | 注册表应用专区 |
| Windows API开发专区 | 网络编程专区 | VB数据库编程专区 | 图像处理与多媒体编程 |
这几天一直在研究各种各样的设计模式,在学习适配器模式、桥接模式和外观模式模式的时候,发现他们之间存在着一定的关系,实际上模式不适单一存在的,在我们的现实编程生活中往往是几种模式结合使用的。
1.适配器模式与桥接模式的区别和联系
适配器模式和桥接模式都是间接引用对象,因此可以使系统更灵活,在实现上都涉及从自身以外的一个接口向被引用的对象发出请求。
两种模式的区别在于使用场合不同,适配器模式主要解决两个已有接口间的匹配问题,这种情况下被适配的接口的实现往往是一个黑匣子。我们不想,也不能修改这个接口及其实现。同时也不可能控制其演化,只要相关的对象能与系统定义的接口协同工作即可。适配器模式经常用在与第三方产品的功能集成上,采用该模式适应新类型的增加的方式是开发针对这个类型的适配器,如下所示。
桥接模式则不同,参与桥接的接口是稳定的,用户可以扩展和修改桥接中的类,但是不能改变接口。桥接模式通过接口继承或者继承实现功能扩展,如图所示。
按照GOF的说法,桥接模式和适配器模式用于设计的不同阶段,桥接模式用于设计的前期,即在设计类时将类规划为逻辑和实现两个大类,使它们可以分别进行演化;而适配器模式用于设计完成之后,当发现设计完成的类无法协同工作时,可以采用适配器模式。
然而,很多情况下在设计初期就要考虑适配器模式的使用,如涉及大量第三方应用接口的情况。
2.适配器模式与桥接模式的联合
在实际应用中,桥接模式经常和适配器模式同时出现,如图所示。本文给出一些示例,仅供参考。
这种情况经常出现在需要其他系统提供实现方法时,一个典型的例子是工业控制中的数据采集。不同工控厂家提供的底层数据采集接口通常不同,因此在做上层软件设计时无法预知可能遇到何种接口。为此需要定义一个通用的采集接口,然后针对具体的数据采集系统开发相应的适配器。数据存储需要调用数据采集接口获得数据,而数据可以保存到关系数据库、实时数据库或者文件中。数据存储接口和数据采集结构构成了桥接,如图所示。
同样的结构也经常出现在报表相关的应用中,报表本身结构和报表输出方式完全可以分开,如下图所示。
报表输出可以单独抽象出来与报表的具体形式分开。但报表输出又依赖于具体的输出方式,如果需要输出为PDF格式,则要调用与PDF相关的API,而这是设计所无法控制的,因此这里要使用适配器模式。
3.适配器模式与外观模式的关系
适配器模式与外观模式有些相似,都是对现相存系统的封装。但这两种模式的意图完全不同,前者使现存系统与正在设计的系统协同工作而后者则为现存系统提供一个更为方便的访问接口。简单地说,适配器模式为事后设计,而外观模式则必须事前设计,因为系统依赖于外观。总之,适配器模式没有引入新的接口,而外观模式则定义了一个全新的接口。
适配器模式用于粒度较小的功能集成,如使用权威单位所规定的无法修改并替换的现有算法模块(油罐的容积算法为国家计量权威单位所规定,需要使用特定的模块),将来也可能升级。这时可以使用适配器模式。
外观模式的使用有时比较难把握,外观接口的定义与设计人员对业务的理解程度有很大关系。如果接口设计过于复杂,则不如直接调用原系统简单;如果接口设计过于简单,有些功能需要调用原有系统才能实现,同样达不到封装目的。在这种情况下,首先要考虑被封装系统的稳定程度。如果系统处于演化阶段,那么接口定义需要复杂一些,以暴露更多的接口。这时,外观模式更像一个大粒度的适配器。被封装系统发生演化时,需要新的外观对象,而这个外观对象起到了适配器的作用。下图所示为这种情况下的结构。
4.总结
我们讨论了适配器模式、桥接模式和外观模式之间的关系。适配器模式经常用在需要与第三方API协同工作的场合,在功能集成需求越来越多的今天,这种模式的使用频度越来越高,特别是桥接模式与适配器的组合在设计中越来越频繁地出现,几乎已经成为一种新的模式。
外观模式是另一个在系统演化中常用的模式,在某些情况下,它与适配器模式的作用有些相似。但总体上来说,外观模式所针对的对象粒度更大。
作者博客:http://fineboy.cnblogs.com
下一篇:Sun微系统修补了Java中5个安全漏洞 >>
相关文章:
- · 安全IT投资之重 Windows服务器受青睐
- · 中国软件业与发达国家存3大差距
- · 微软投巨资入安全市场 有收获挑战仍大
- · 甲骨文发布数据库新工具 启动内容管理战略
- · 微软推多视角俯瞰城市地图和本地搜索服务
- · Google发布可定制个人化搜索主页API
- · 法德不满Google独大 联手研发搜索引擎
- · Google对抗美政府 拒不提供搜索请求名单
- · 互联网一代正在远离中国股市
- · 调查显示美国IT行业就业人数创下新纪录
- · Oracle数据库中分区表的操作方法
- · 浅谈Oracle 10G 闪回恢复区
- · Oracle诊断案例:Job任务停止执行
- · 甲骨文:5年内半数客户将运行Linux
- · 软件商自揭政府采购内幕:厂商互相残杀
- · 甲骨文BEA口水战 宣扬各自BPEL标准
- · 互联网将告别狂欢 在恐惧和焦虑中前进
- · 3721被封 马云主打阿里巴巴品牌
- · 互联网周刊:Oracle的假命题
- · 甲骨文整合仁科顺利酝酿下次收购
- · IBM成立开源智囊风投组织 向微软挑战
- · 李开复招聘三大标准:实干、内功与人品
- · 美国拒绝联合国提议 垄断互联网控制权
- · 未来五年我国软件收入将超13000亿元
- · 评论:博客网站经历演出季后进入淘汰赛
- · 博客开始数钞票 网站初现三大盈利模式
- · 新版Hotmail代号Kahuna 开始进入测试
- · MSN推本地搜索测试业务 拟增虚拟地球服务
- · 评论:在微软前面游泳
- · 微软打算抛弃WGF 公布DirectX 10细节
- · 微软公布Vista保护数据新特性
- · 微软将扩大中国招募规模 短期达千人
- · Vista准时发布微软面临压力和挑战
- · AOL合作伙伴将敲定 微软Google二选一
- · 微软公司推出面向不同用户CRM软件升级版
- · 微软发布服务器升级版 增加虚拟内容
- · 韩政府判定微软违法 开3200万美元罚单
- · 美国政府出面为微软喊冤 称韩国处罚过重
