设计模式-1适配器模式.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
适配器模式 适配器现实中到处都是 如:中国制造的笔记本电脑带到欧洲使用,需要一个交流电的适配器 面向对象适配器 假设有一个软件系统,你希望它能和一个新的厂商类库搭配使用,但是这个新厂商所设计出来的接口,不同于旧厂商的接口 不想改变现有代码 也不能改变厂商的代码 怎么办? 例子 需求 有一个Shape类,和几个派生类 要求实现一个新的Shape——圆(Circle) 优秀的编程人员首先会四处寻找替代方案 发现有人已经编写好了一个处理圆形的类,名叫XXCircle 它并不知道我们的命名规则,而是 displayIt fillIt undisplayIt 不能直接使用XXCircle,因为想保持Shape类的多态行为 名称和参数列表与Shape类不同 无法从Shape类派生 Circle包含一个XXCircle 实现Adapter模式 Class Circle extends Shape { private XXCircle myXXCircle; public Circle ( ) { myXXCircle= new XXCircle ( ); } void public display ( ) { myXXCircle.displayIt (); } … } 客户使用适配器的过程如下: 客户通过目标接口调用适配器的方法对适配器发出请求 适配器使用被适配者接口把请求转换成被适配者的一个或多个调用接口 客户收到调用的结果,但并未察觉这一切是适配器在起转换作用 Adapter模式定义 定义:将一个类的接口,转换成客户期望的另一个接口。 意图:使控制范围之外的一个原有对象与某个接口匹配 问题:系统的数据和行为都正确,但是接口不符。通常用于必须从抽象类派生时。 解决方案:Adapter模式提供了具有所需接口的包装类。 Adapter模式定义 参与者与协作者:Adapter改变了Adaptee的接口,使Adaptee与Adapter的基类Target匹配。这样Client就可以使用Adaptee了,好像它是Target类型。 Adapter模式定义 效果:Adapter模式使原有对象能够适应新的类结构,不受其接口的限制。 实现:将原有类包含在另一个类之中。让包含类与需要的接口匹配,调用被包含类的方法 类的适配器 类适配器不是使用组合来适配被适配者,而是继承被适配者和目标类 练习 试着将Shape类,Circle类, XXCircle类对应到对象适配器/类适配器模式的定义中 真实世界中的适配器 想一想Java语言中不同版本中有没有需要进行适配的 真实世界中的适配器 早期java版本中集合(Collection)类型(例如:Vector,Stack,Hashtable)都实现了一个elements()方法。该方法返回一个Enumeration(枚举) 新版本中开始使用Iterator(迭代器)接口,这个接口和枚举接口很像,但不同的是,迭代器还提供了删除元素的能力。 问题 面对遗留代码,这些代码会暴露出枚举器接口,但我们又希望在新的代码中只使用迭代器。 解决办法 构造一个适配器 将枚举适配到迭代器 实例 有一个类(adaptee)实现了数学中的幂次运算,方法中需要传入两个参数,一个是基数base,另外一个是幂次exp。现在客户端需要一个求得一个数的平方的函数接口(target),传入一个数,得到它的平方值。为了复用已经存在的类adaptee,适用Adapter来适配adaptee,adapter实现了target接口。 在架构层次上的应用 JDBC驱动软件与适配器模式 JDBC给出一个客户端通用的界面。每个数据库引擎的JDBC驱动软件都是一个介于JDBC接口和数据库引擎接口之间的适配器软件 抽象的JDBC接口和各个数据库引擎的API之间都需要相应的适配器软件,即为各个数据库引擎准备的驱动软件。 ? JDBC/ODBC桥梁 如果没有合适的JDBC驱动软件,用户也可以通过ODBC驱动软件把JDBC通过一个JDBC/ODBC桥梁软件与ODBC驱动软件连接起来,从而达到连接数据库的目的。 * 现有系统 厂商类 现有系统 厂商类 适配器 * * *

文档评论(0)

haihang2017 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档