收藏 分销(赏)

适配器模式.doc

上传人:s4****5z 文档编号:8095813 上传时间:2025-02-04 格式:DOC 页数:7 大小:155.50KB 下载积分:10 金币
下载 相关 举报
适配器模式.doc_第1页
第1页 / 共7页
适配器模式.doc_第2页
第2页 / 共7页


点击查看更多>>
资源描述
Adapter pattern 问题引出:大家生活中可能碰到的一个问题就是你新买的手机自带的耳机是2.5接口的,不幸的是有一天你的耳机坏了,你去市面上根本就找不到2.5的耳机了,基本上是3.5接口了,没办法你只好买了个3.5接口的耳机,老板告诉你:“我给你一个适配器”这不问题就解决了。 问题分析:3.5的接口的耳机在你手机上本来是没法使用的,因为它没有按照2.5接口的设计啊,而现在我又想使用这幅耳机,于是乎有了“适配器(Adapter)”这个一个东西出来了。 Adapter模式的定义:把一个类的接口变换成客户端所期待的另外一种接口,使得原本由于接口不兼容而不能再一起工作的那些类可以一起工作。 适配器模式分类:1.类的适配器模式(采用继承实现)2.对象适配器(采用对象组合方式实现) 类的适配器类图: 模式的构成:以问题中例子为模型 目标抽象角色(Target):定义客户所期待要使用的接口,我们把手机当做客户端,客户端所需要使用的耳机的接口是2.5的,在这里就可以抽象出来一个2.5接口的设备(并不一定是耳机)。 源角色(Adaptee):需要被适配的接口,在这里指的是我们从市场上买回来的那个3.5接口的耳机。 适配器角色(Adapter):用来把源接口转换成符合要求的目标接口的设备,在这里指的是老板送给我们的那个“转换器”。 客户端(Client):这里指的就是那个给我们带来麻烦的手机喽。 示例代码: Java代码 1 //Target 2 3 package pattern.adapter; 4 5 public interface Target { 6 7 public void provide2_5(); 8 9 } 10 11 //Adaptee 12 13 package pattern.adapter; 14 15 public class Adaptee { 16 17 public void provide3_5(){ 18 19 System.out.println("我是一个3.5的接口哦"); 20 21 } 22 23 } 24 25 //Adapter 26 27 package pattern.adapter; 28 29 public class Adapter extends Adaptee implements Target { 30 31 @Override 32 33 public void provide2_5() { 34 35 this.provide3_5(); 36 37 } 38 39 } 40 41 //Client 42 43 package pattern.adapter; 44 45 public class CellPhoneClient { 46 47 public static void main(String[] args) { 48 49 Target target = new Adapter(); 50 51 //该手机只支持2.5接口的耳机 52 53 target.provide2_5(); 54 55 } 56 57 } 输出结果 :我是一个3.5的接口哦 从输出结果可以看出只支持2.5接口的手机成功的使用3.5的耳机了。这就是适配器模式的作用。 对象的适配器模式: 对象的适配器模式的不同之处在于Adapter角色封装了Adaptee角色,而不像类的适配器模式所采取的继承方式。其原理基本上是相似的。 应用适配器模式的场景: 1.系统需要使用现有的类,而现有类不符合当前系统的要求。如问题的提出。 2.系统要建立一个可以重复使用的类,用来与彼此没有太大关联的类或者在将来要引用的类一起工作。在Junit中有使用适配器模式的情景。 在TestCase的runBare方法中发现 该方法采用了两种模式,模板方法模式(不在本讨论范围)和适配器模式,其中runTest()方法其实 对应的就是我们用户(程序员)所编写的测试方法 在runTest方法中通过反射最终调用我们所编写的测试方法。我们可从宏观上来分析改代码,junit作为一个框架,他是没法知道我们要写些什么样的测试方法的,也是就是说他没法在runbare方法中直接调用我们所写的测试方法,他就采用适配器模式这样的一个方式来实现。Junit框架本身没法直接调用客户端所写的测试类,但他可以直接调用他本身拥有的类TestCase,这里的TestCase就相当于Adapter了,自己所写了测试类相当于Adaptee角色。 缺省的适配器模式(Default Adapter):缺省的适配器模式为一个接口提供缺省的实现,子类可以从这个缺省的实现类进行扩展,而不必而原有的接口进行扩展。相信大家在学习Swing时“AWT中事件的处理”有所接触。他的好处在于客户端不需要去实现与他无关的方法,只做他最关心的事。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服