版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 进度合同书协议
- 农产品批发购销协议
- 校园内部超市销售合约
- 购销合同空白表格
- 机砖买卖购销合同
- 移动应用开发与实施合同
- 净水器使用指导服务合同
- 招标采购服务器文件
- 技术培训与技术转让合同
- 纺织品批发买卖合同
- 蓝色商务极简科技风创新发布会ppt模板
- 管理学原理第5章案例:沙漠求生游戏课件
- TCL液晶电视各机芯进工厂模式方法汇总
- 《中国古代文学史——李白》优秀PPT课件
- 物业公司客户服务部危险源清单及风险评价表
- 02-1-桥梁典型病害
- 危险化学品普查登记表(11张表)
- PDCA循环在安全管理中的应用
- 相似三角形的性质 华师大版 - 华师大版九年级上册
- ISO13485-2016培训教材PPT课件
- 解读高考物理实验命题特点和规律
评论
0/150
提交评论