网站大量收购独家精品文档,联系QQ:2885784924

适配器模式(Java)介绍.pptVIP

  1. 1、本文档共42页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
模式扩展 双向适配器 在对象适配器的使用过程中,如果在适配器中同时包含对目标类和适配者类的引用,适配者可以通过它调用目标类中的方法,目标类也可以通过它调用适配者类中的方法,那么该适配器就是一个双向适配器。 适配器模式 模式扩展 双向适配器 适配器模式 结构型模式描述如何将类或者对象结合在一起形成更大的结构。 适配器模式用于将一个接口转换成客户希望的另一个接口,适配器模式使接口不兼容的那些类可以一起工作,其别名为包装器。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。 适配器模式包含四个角色:目标抽象类定义客户要用的特定领域的接口;适配器类可以调用另一个接口,作为一个转换器,对适配者和抽象目标类进行适配,它是适配器模式的核心;适配者类是被适配的角色,它定义了一个已经存在的接口,这个接口需要适配;在客户类中针对目标抽象类进行编程,调用在目标抽象类中定义的业务方法。 在类适配器模式中,适配器类实现了目标抽象类接口并继承了适配者类,并在目标抽象类的实现方法中调用所继承的适配者类的方法;在对象适配器模式中,适配器类继承了目标抽象类并定义了一个适配者类的对象实例,在所继承的目标抽象类方法中调用适配者类的相应业务方法。 小结 适配器模式的主要优点是将目标类和适配者类解耦,增加了类的透明性和复用性,同时系统的灵活性和扩展性都非常好,更换适配器或者增加新的适配器都非常方便,符合“开闭原则”;类适配器模式的缺点是适配器类在很多编程语言中不能同时适配多个适配者类,对象适配器模式的缺点是很难置换适配者类的方法。 适配器模式适用情况包括:系统需要使用现有的类,而这些类的接口不符合系统的需要;想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类一起工作。 小结 背景: 假设我们已经有一个软件系统,原来使用了一个第三方类库B。现在有一个新的第三方类库A,其功能等各方面都更加强大。我们希望用A来替换B,以改善我们的系统。但是B的接口与A不一样。那怎么办 * 这时候我们根据适配器模式: 引入一个adapter来达到目的。 * * * * * 动机: 我们原来有一个程序使用鸭子对象,现在想让它使用火鸡对象,但是火鸡与鸭子的接口不同,不能直接使用。 写一个火鸡适配器,让火鸡看起来像鸭子。 * * * * * 模式动机 适配器模式 模式动机(积木) 适配器模式 A B New System (积木整合解决方案) 适配器模式 B Adapter A System (目标) 适配器模式 B Adapter System 不需要修改代码 不需要修改代码 新代码 一个实际的例子 适配器模式 简化的鸭子接口和类 public interface Duck { public void quack(); public void fly(); } 鸭子接口Duck,定义了鸭子具有“鸣叫”和“飞行”方法 MallardDuck类(野鸭子) 适配器模式 public class MallardDuck implements Duck { public void quack() { System.out.println(嘎嘎嘎...); } public void fly() { System.out.println(我在飞哦!); } } MallardDuck类简单地实现了Duck接口。 现在有一种新家伙 适配器模式 public interface Turkey { public void gobble(); public void fly(); } WildTurkey(野火鸡类) 适配器模式 public class WildTurkey implements Turkey { public void gobble() { System.out.println(咕咕咕...); } public void fly() { System.out.println(我在飞,不过飞不远。); } } 火鸡适配器 适配器模式 public class TurkeyAdapter implements Duck { Turkey turkey; public TurkeyAdapter(Turkey turkey) { this.turkey = turkey; } public void quack() { turkey.gobble(); } public void fly() { for(int i=0; i 5; i++) { turkey.fly(); } } } 火鸡适配器包装了一个火鸡对象,同时实现了鸭子接口。这样就可以像使用鸭子

文档评论(0)

如果.可以. + 关注
官方认证
文档贡献者

坚持分享有价值的资源!

认证主体汉中恒朱网络技术有限公司
IP属地陕西
统一社会信用代码/组织机构代码
91610726MA6YWAFG7U

1亿VIP精品文档

相关文档