适配器模式adapter

适配器模式adapter

ID:33719015

大小:161.50 KB

页数:13页

时间:2019-02-28

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

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

1、1.概述:        接口的改变,是一个需要程序员们必须(虽然很不情愿)接受和处理的普遍问题。程序提供者们修改他们的代码;系统库被修正;各种程序语言以及相关库的发展和进化。    例子1:iphone4,你即可以使用UBS接口连接电脑来充电,假如只有iphone没有电脑,怎么办呢?苹果提供了iphone电源适配器。可以使用这个电源适配器充电。这个iphone的电源适配器就是类似我们说的适配器模式。(电源适配器就是把电源变成需要的电压,也就是适配器的作用是使得一个东西适合另外一个东西。)    例子2:最典型的例子就是很

2、多功能手机,每一种机型都自带有从电器,有一天自带充电器坏了,而且市场没有这类型充电器可买了。怎么办?万能充电器就可以解决。这个万能充电器就是适配器。2.问题   你如何避免因外部库的API改变而带来的不便?假如你写了一个库,你能否提供一种方法允许你软件的现有用户进行完美地升级,即使你已经改变了你的API?为了更好地适宜于你的需要,你应该如何改变一个对象的接口?3.解决方案    适配器(Adapter)模式为对象提供了一种完全不同的接口。你可以运用适配器(Adapter)来实现一个不同的类的常见接口,同时避免了因升级和拆解

3、客户代码所引起的纠纷。适配器模式(AdapterPattern),把一个类的接口变换成客户端所期待的另一种接口, Adapter模式使原本因接口不匹配(或者不兼容)而无法在一起工作的两个类能够在一起工作。又称为转换器模式、变压器模式、包装(Wrapper)器模式(把已有的一些类包装起来,使之能有满足需要的接口)。   考虑一下当(不是假设!)一个第三方库的API改变将会发生什么。过去你只能是咬紧牙关修改所有的客户代码,而情况往往还不那么简单。你可能正从事一项新的项目,它要用到新版本的库所带来的特性,但你已经拥有许多旧的应用

4、程序,并且它们与以前旧版本的库交互运行地很好。你将无法证明这些新特性的利用价值,如果这次升级意味着将要涉及到其它应用程序的客户代码。4.分类共有两类适配器模式:1.类的适配器模式(采用继承实现)2.对象适配器(采用对象组合方式实现)1)类适配器模式  ——适配器继承自已实现的类(一般多重继承)。Adapter与Adaptee是继承关系1、用一个具体的Adapter类和Target进行匹配。结果是当我们想要一个匹配一个类以及所有它的子类时,类Adapter将不能胜任工作2、使得Adapter可以重定义Adaptee的部分行为

5、,因为Adapter是Adaptee的一个子集3、仅仅引入一个对象,并不需要额外的指针以间接取得adaptee2)对象适配器模式——适配器容纳一个它包裹的类的实例。在这种情况下,适配器调用被包裹对象的物理实体。Adapter与Adaptee是委托关系1、允许一个Adapter与多个Adaptee同时工作。Adapter也可以一次给所有的Adaptee添加功能2、使用重定义Adaptee的行为比较困难无论哪种适配器,它的宗旨都是:保留现有类所提供的服务,向客户提供接口,以满足客户的期望。即在不改变原有系统的基础上,提供新的接

6、口服务。5.适用性以下情况使用Adapter模式:1•你想使用一个已经存在的类,而它的接口不符合你的需求。2•你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作。3•(仅适用于对象Adapter)你想使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的接口。对象适配器可以适配它的父类接口。即仅仅引入一个对象,并不需要额外的指针以间接取得adaptee。6.结构类适配器使用多重继承对一个接口与另一个接口进行匹配,如下图所示:对象匹配器依赖于对象组合,如下图所

7、示:7.构建模式的组成•目标角色(Target):—定义Client使用的与特定领域相关的接口。•客户角色(Client):与符合Target接口的对象协同。•被适配橘色(Adaptee):定义一个已经存在并已经使用的接口,这个接口需要适配。•适配器角色(Adapte):适配器模式的核心。它将对被适配Adaptee角色已有的接口转换为目标角色Target匹配的接口。对Adaptee的接口与Target接口进行适配.8.效果类适配器和对象适配器有不同的权衡。类适配器•用一个具体的Adapter类对Adaptee和Target

8、进行匹配。结果是当我们想要匹配一个类以及所有它的子类时,类Adapter将不能胜任工作。•使得Adapter可以重定义Adaptee的部分行为,因为Adapter是Adaptee的一个子类。•仅仅引入了一个对象,并不需要额外的指针以间接得到Adaptee。对象适配器则•允许一个Adapter与多个Ada

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

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

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