博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
适配器模式
阅读量:4641 次
发布时间:2019-06-09

本文共 979 字,大约阅读时间需要 3 分钟。

配器模式定义如下:

适配器模式(Adapter Pattern):将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。

    从定义中,很容易理解该模式所要解决的问题和解决方法。在实际开发中,由于种种原因(可能是历史原因,可能是设计与某些外部实现不匹配),常会出现一些接口或模块间不兼容的情况。这时,可以通过引入一个适配器(Adapter)来作为一个”和事老“,在中间起到兼容的作用。

    适配器模式可以分为对象适配器和类适配器。前者中,适配器与适配者之间是关联关系,后者是继承或者实现关系。
  • 对象适配器的使用频率会相对较高,它的实现结构通常如下:

    Target是抽象的对外接口,定义了request方法。而Adaptee是提供具体实现的模块,提供的方法却是spciflicRequest方法。因此是不兼容的,这是引入了Adapter---适配器!由它来实现抽象接口Target,持有被适配者的对象,并在request实现中调用真正的功能模块Adaptee的spciflicRequest。这样两端不兼容的部分就通过适配器连接了起来。

  • 类适配器与对象适配器的最大区别在于适配器与适配者间的关系。类适配器中的关系为继承或者实现关系。
    一类较少使用的变种:双向适配器。适配器的两端均即充当适配者的角色又充当调用端的角色。
    另一类特殊变种:缺省适配器。如果一个接口定义了10个方法,但某些实现中只需要其中的3个,直接使用的情况下,每个实现类都要实现这10个方法。这时可以引入一个抽象类实现接口,并未每个接口定义的方法提供一个空实现。这样具体实现类继承这个抽象类,就可以有选择的实现其中的一部分。这时的这个抽象类,我们称为缺省适配器。
 
总结:
  • 优点:
    • 解决不兼容场景
    • 调用方和实现方解耦,增加透明性
    • 已有模块和功能的复用,同时不修改它们的代码
    • 一个对象适配器可以适配多个适配者,简化对外接口
  • 缺点:
    • 类适配器由于Java不支持多继承,一次只能适配一个适配者
    • 类适配器适配者不能为final类
    • 类适配器的目标抽象类(target)只能为接口,因为不能多继承,有局限性

转载于:https://www.cnblogs.com/endlu/p/5159848.html

你可能感兴趣的文章
基于TCP/IP的长连接和短连接
查看>>
SharePoint Framework解决方案管理参考(二)
查看>>
使用PowerShell在Windows 10中创建本地用户帐户
查看>>
让服务器可以下载apk和ipa文件
查看>>
[转发]如何在ASP.NET的web.config配置文件中添加MIME类型
查看>>
windows下Python三步安装pip
查看>>
BZOJ 1096 【ZJOI2007】 仓库建设
查看>>
Ubuntu环境下安装Scala以及安装IntelliJ Scala插件(Plugin)
查看>>
jquery常用选择器(转)
查看>>
带你玩转 jQuery
查看>>
Sql Server 排序规则字符集的冲突问题
查看>>
七大内排序
查看>>
安装rcssmin方法
查看>>
创建、删除表
查看>>
CI接收post与get传输数据
查看>>
禁用缓存
查看>>
显示和编辑注解
查看>>
ArcGIS AddIN之工具不可用
查看>>
配置错误,无法识别的配置节 system.serviceModel 解决方案
查看>>
oc学习
查看>>