6适配器模式.ppt

6适配器模式.ppt

ID:48773558

大小:99.50 KB

页数:26页

时间:2020-01-23

6适配器模式.ppt_第1页
6适配器模式.ppt_第2页
6适配器模式.ppt_第3页
6适配器模式.ppt_第4页
6适配器模式.ppt_第5页
资源描述:

《6适配器模式.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第六讲适配器模式场景在朋友聚会上碰到了一个美女Sarah,从香港来的,可我不会说粤语,她不会说普通话,只好求助于我会粤语的朋友kent了,他作为我和Sarah之间的Adapter,让我和Sarah可以相互交谈了(也不知道他会不会耍我)适配器模式(Adapter)概述适配器模式(别名:包装器Wrapper)将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。适配器模式属于结构型设计模式适配器模式的角色模式的结构中包括三种角色:目标(Target)被适配者(Adaptee)适配器(Adapter)基于

2、类的Adapter模式基于类的Adapter模式的一般结构如下:Adaptee类为Adapter的父类,Adaptee类为适配源,适配目标(接口)也是Adapter的父类;基于类的Adapter模式比较适合应用于Adapter想修改Adaptee的部分方法的情况。基于类的Adapter模式基于对象的Adapter模式基于对象的Adapter模式的一般结构如下:Adaptee类对象为Adapter所依赖,适配目标(接口)是Adapter的父类;基于对象的Adapter模式比较适合应用于Adapter想为Adaptee添加新的方法的情况。但在Adaptee类的方法与A

3、dapter类的方法不同名而实现相同功能的情况下,我们一般也使用基于对象的Adapter模式,基于对象的Adapter模式类适配器和对象适配器比较对于类适配器用一个具体的Adapter类对Adaptee和Target进行匹配。结果是当我们想要匹配一个类以及所有它的子类时,类Adapter将不能胜任工作。使得Adapter可以重定义Adaptee的部分行为,因为Adapter是Adaptee的一个子类。仅仅引入了一个对象,并不需要额外的对Adaptee的引用。类适配器和对象适配器比较对于对象适配器允许一个Adapter与多个Adaptee—即Adaptee本身以及它

4、的所有子类(如果有子类的话)同时工作。Adapter也可以一次给所有的Adaptee添加功能。使得重定义Adaptee的行为比较困难。这就需要生成Adaptee的子类并且使得Adapter引用这个子类而不是引用Adaptee本身。适配器模式示例1.目标(Target):ThreeElectricOutlet.javapublicinterfaceThreeElectricOutlet{publicabstractvoidconnectElectricCurrent();}2.被适配者(Adaptee):TwoElectricOutlet.javapublicint

5、erfaceTwoElectricOutlet{publicabstractvoidconnectElectricCurrent();}适配器模式示例3.适配器(Adapter)TreeElectricAdapter.javapublicclassTreeElectricAdapterimplementsThreeElectricOutlet{//对被适配者(Adaptee)的引用(实际上是一种包装)TwoElectricOutletoutlet;TreeElectricAdapter(TwoElectricOutletoutlet){this.outlet=ou

6、tlet;}publicvoidconnectElectricCurrent(){outlet.connectElectricCurrent();}}适配器模式示例4.应用Application.java_2//Wash类实现了ThreeElectricOutlet接口classWashimplementsThreeElectricOutlet{Stringname;Wash(){name="黄河洗衣机";}Wash(Strings){name=s;}publicvoidconnectElectricCurrent(){turnOn();}publicvoidtu

7、rnOn(){System.out.println(name+"开始洗衣物。");}}适配器模式示例应用Application.java_3//TV类实现了TwoElectricOutlet接口classTVimplementsTwoElectricOutlet{Stringname;TV(){name="长江电视机";}TV(Strings){name=s;}publicvoidconnectElectricCurrent(){turnOn();}publicvoidturnOn(){System.out.println(name+"开始播放节目。");}}适配

8、器模式示例

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。