




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、适配器模式,目标,了解适配器模式 理解适配器模式的优点和缺点 熟练的运用,适配器模式(Adapter)简介,把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口原因不匹配而无法一起工作的两个类能够一起工作。适配类可以根据参数返还一个合适的实例给客户端。,适配器-换个包装再利用,适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本接口不匹配而无法在一起工作的两个类能够在一起工作。 名称由来: 这很像变压器(Adapter),变压器把一种电压变换成另一种电压。 Adapter模式也很像货物的包装过程:被包装的货物的真实样子被包装所掩盖和改变,因此有人把这种模式叫做包装(Wr
2、apper)模式。事实上,大家经常写很多这样的Wrapper类,把已有的一些类包装起来,使之有能满足需要的接口。,适配器-换个包装再利用,适配器模式的三种形式 : 类的适配器模式(适配与被适配:继承关系) 对象的适配器模式 (适配与被适配:引用关系) 接口的是适配器模式,类的Adapter模式的结构,由图中可以看出,Adaptee类没有Request方法,而客户期待这个方法。 为了使客户能够使用Adaptee类,提供一个中间环节,即类Adapter类,Adapter类实现了Target接口,并继承自Adaptee,Adapter类的Request方法重新封装了Adaptee的SpecificR
3、equest方法,实现了适配的目的。,public interfaceITarget/MethodsvoidRequest();,/外部库 public classAdaptee/MethodspublicvoidSpecificRequest()System.out.println(CalledSpecificRequest();,/Adapterpublic classAdapter extends Adaptee implements ITarget/ImplementsITargetinterfacepublicvoidRequest()/Possiblydosomedatamanip
4、ulation/andthencallSpecificRequestthis.SpecificRequest();,publicclassClientpublicstaticvoidmain(Stringargs)ITargett=newAdapter();t.Request();,类的Adapter模式-代码,对象的Adapter模式的结构,客户端需要调用Request方法,而Adaptee没有该方法,为了使客户端能够使用Adaptee类,需要提供一个包装(Wrapper)类Adapter。 这个包装类包装了一个Adaptee的实例,从而将客户端与Adaptee衔接起来。 由于Adapter
5、与Adaptee是委派关系,这决定了这个适配器模式是对象的。,public interfaceITarget/MethodsvoidRequest();,/外部库 public classAdaptee/MethodspublicvoidSpecificRequest()System.out.println(CalledSpecificRequest();,/Adapterpublic classAdapterimplements ITargetAdaptee adaptee = new Adaptee(); publicvoidRequest() adaptee.SpecificReques
6、t();,publicclassClientpublicstaticvoidmain(Stringargs)ITargett=newAdapter();t.Request();,对象的Adapter模式-代码,在什么情况下使用适配器模式,系统需要使用现有的类,而此类的接口不符合系统的需要。但我们不希望手动更改原有类的时候。 使用第三方组件,组件接口定义和自己定义的不同,不希望修改自己的接口,但是要使用第三方组件接口的功能。 例子: 手机电源适配器 你现在用的组织结构是自己的, 但是公司要求统一,使用同样的组织结构实现,这个时候就需要使用适配器。,优点和缺点,优点 通过适配器,客户端可以调用同一接口,因而对客户端来说是透明的。这样做更简单、更直接、更紧凑。 复用了现存的类,解决了现存类和复用环境要求不一致的问题。 将目标类和适配者类解耦,通过引入一个适配器类重用现有的适配者类,而无需修改原有代码。 一个对象适配器可以把多个不同的适配者类适
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 IEC TS 62257-9-8:2025 EN Renewable energy off-grid systems - Part 9-8: Integrated systems - Requirements for stand-alone renewable energy products with power ratings less th
- 瑜伽行业私教课程合同
- 房屋代理销售协议
- 夫妻共同担保签字借款合同
- 外立面装修施工合同
- 汽车零部件生产加工合作协议
- 数字文化创意产业投资合同
- 产品研发合作框架协议
- 国家建造师聘用协议书
- 机关事业单位编外人员劳动合同书
- 2025年度光伏电站光伏组件回收处理合同示范文本
- 2025年春季少先队工作计划及安排表(附:少先队每月工作安排表)
- 中央2025年公安部部分直属事业单位招聘84人笔试历年参考题库附带答案详解
- 《教育强国建设规划纲要(2024-2035年)》全文
- 2024-2025学年全国中学生天文知识竞赛考试题库(含答案)
- 小学科学湘科版六年级下册全册同步练习含答案
- 思维第一:全面提升学习力
- 影视文学教程整本书课件完整版电子教案全套课件最全教学教程ppt(最新)
- 防火门监控系统调试、检测、验收记录
- “大水利”概念及其意义
- 三年级上册数学应用题大全98715
评论
0/150
提交评论