- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
本章目标 理解适配器模式的使用 掌握桥接设计模式的思想精髓 小菜出国归来 小菜在国外终于买到了自己心仪的IBM经典版本子,准备以后开发和商务活动用,结果发现了一个很恐怖的事实——在中国找不到插头…… 电脑可以使用了 失望之余去找大鸟,大鸟说:再飞回去买个转换器不就好了? ? 小菜在路上就嘀咕:没想到想用外国的电脑这么麻烦……咦,我这次的项目和省财政的系统交互不也存在这个问题吗? 我的这个“转换器”去哪里买啊? 适配器模式 设计意图:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 模式分析 客户端需要的是Target类的Request()方法。而我们只提供了Adaptee类的SpecificRequest()方法来提供这个功能,出现了不一致。 也就是说省财政留的开放接口和我们系统定义的不相同,结果就是取不到数据。 使用适配器模式解决 .NET中的适配器模式 1.Adapter模式在.NET Framework中的一个最大的应用就是COM Interop。COM Interop就好像是COM和.NET之间的一条纽带,一座桥梁。我们知道,COM组件对象与.NET类对象是完全不同的,但为了使COM客户程序象调用COM组件一样调用.NET对象,使.NET程序 象使用.NET对象一样使用COM组件,微软在处理方式上采用了Adapter模式,对COM对象进行包装,这个包装类就是RCW(Runtime Callable Wrapper)。RCW实际上是runtime生成的一个.NET类,它包装了COM组件的方法,并内部实现对COM组件的调用。如下图所示: .NET中的适配器模式 2..NET中的另一个Adapter模式的应用就是DataAdapter。ADO.NET为统一的数据访问提供了多个接口和基类,其中最重要的接口之一是IdataAdapter。与之相对应的DataAdpter是一个抽象类,它是ADO.NET与具体数据库操作之间的数据适配器的基类。DataAdpter起到了数据库到DataSet桥接器的作用,使应用程序的数据操作统一到DataSet上,而与具体的数据库类型无关。甚至可以针对特殊的数据源编制自己的DataAdpter,从而使我们的应用程序与这些特殊的数据源相兼容。注意这是一个适配器的变体。 使用适配器注意事项 数据和行为正确,只有接口不符; 双方都不太容易修改的时候 设计初期尽量避免使用适配器 体验手机开发之旅 公司新任务是开发手机软件,包含游戏和通讯录,要兼容不通品牌…… 很快运用面向对象思想设计出一个雏形: 扩展性问题 如果要加媒体播放功能怎么办?为每个品牌手机增加一个子类 如果也要为国内最新的小米手机做开发怎么办?所有功能子类全部重复一遍 问题分析 对象的继承关系是在编译时就定义好了,所以无法在运行时改变从父类继承过来的实现,子类的实现与父类的依赖关系非常密切,以至于父类发生任何变化必然导致子类发生变化。 当我们需要复用子类的时候,如果继承下来的实现不合适解决新问题,则父类必须重写或被更适合的类替换,这种依赖关系限制了灵活性并最终限制了软件的复用性。 我们要做的就是降低依赖 两个概念 聚合:表示一种弱拥有的关系,对象A可以包含对象B,但对象B不是对象A的一部分; 组合:强拥有关系,严格的部分和整体的关系,部分和整体的生命周期是一样的。 组合的方式 按照品牌分 按照软件分类分 桥接模式 意图:将抽象部分与实现部分分离,使它们都可以独立的变化。[GOF 《设计模式》] 模式代码分析 最终手机系统 效果及实现要点 1.Bridge模式使用“对象间的组合关系”解耦了抽象和实现之间固有的绑定关系,使得抽象和实现可以沿着各自的维度来变化。 2.所谓抽象和实现沿着各自维度的变化,即“子类化”它们,得到各个子类之后,便可以任意它们,从而获得不同平台上的不同型号。 3.Bridge模式有时候类似于多继承方案,但是多继承方案往往违背了类的单一职责原则(即一个类只有一个变化的原因),复用性比较差。Bridge模式是比多继承方案更好的解决方法。 4.Bridge模式的应用一般在“两个非常强的变化维度”,有时候即使有两个变化的维度,但是某个方向的变化维度并不剧烈——换言之两个变化不会导致纵横交错的结果,并不一定要使用Bridge模式。 适用性 1.如果一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性,避免在两个层次之间建立静态的联系。 2.设计要求实现化角色的任何改变不应当影响客户端,或者说实现化角色的改变对客户端是完全透明的。 3.一个构件有多于一个的抽象化角色和实现化角色,系统需要它们之间进行动态耦合。 4
您可能关注的文档
最近下载
- 中考语文二轮复习:综合性学习 图表类专项练习题(有答案).pdf VIP
- 信息光学复习笔记.doc VIP
- 2025年滨州市农发投资集团有限公司及权属公司公开招聘工作人员(第二批)笔试备考题库(8名)及答案解.docx VIP
- 《大型养路机械制动技术》高职铁道养路机械应用全套教学课件.pptx
- 永磁同步电机无位置传感器控制技术的改进与应用.docx VIP
- 同步练习(附答案)27.2.2 相似三角形的性质 练习 人教版数学九年级下册.docx VIP
- T-CAMDI 035—2020 医用输液、输血器具 一次性使用三通阀.pdf VIP
- 四年级上册语文词语闯关表(小张老师整理).pdf VIP
- 医院病房呼叫系统设计.pdf VIP
- GBT28253-2012挤压丝锥国家标准.pdf
原创力文档


文档评论(0)