适配器模式
——
Adaptor(Adapter)
注意
:
Adapto
r
,也作
Adapte
r
一、定义及架构
Adaptor(
别名
Wrapper)
模式:将一个类的接口,转换成客户期望的另一个类的接口。适配器器让原本接口不兼容的类可以合作无间。
要点:
1.
适配器模式主要应用“希望复用一些类,但是接口又与复用环境要求不一致的情况”,在遗留代码复用、类库迁移等方面非常有用。
2.
适配器模式有“对象适配器”和“类适配器”两种形式的实现结构,但类适配器采用“多继承”的实现方式,带来了不良的高耦合,所以一般不推荐使用。对象适配器采用“对象组合”的方式,更符合松耦合精神。
ClassAdaptor
类适配器
_
继承方式
ObjectAdaptor
对象适配器
_
组合方式
如何记忆:
Adaptee是系统已有的功能
(如,usb插口);
Target是适配器规范
(如,usb接口转换成micro-sd接口的规范);
ObjectAdaptor/ClassAdaptor是适配器规范的具体实
现(如,A公司生产的usb接口转换成micro-sd接口的卡片,通常价值5块钱)
二、代码实现“
ObjectAdaptor
对象适配器”
public class Main {
public static void main(String[] args){
Target target=new ObjectAdaptor(new Adaptee());
target.request();
}
}
public interface Target {
public void request();
}
public class Adaptee {
public void specificRequest(){
System.out.println("系统已经实现的功能");
}
}
public class ObjectAdaptor implements Target{
private Adaptee adaptee=null;
public ObjectAdaptor(Adaptee adaptee){
this.adaptee=adaptee;
}
/**
* 适配方法:这个方法必须与Target中的相关方法声明完全一样
*/
public void request(){
adaptee.specificRequest();
}
}
三、总结:
1.
模式的功能
适配器模式的主要功能在于进行匹配转换,复用已有功能,而非实现新的接口。也就是说,客户端需要的功能已经实现好了,不需要适配器模式来实现,适配器模式主要负责把不兼容的接口转换成客户端期望的样子即可。
但这并不是说,在适配器里面不能实现功能。适配器里面可以实现功能,我们成这种适配器为“智能适配器
”。而且,在接口适配和转换的过程中,也有可能需要额外实现一定的功能,才能转换过来,比如需要调整参数进行匹配等。
2. Adaptee
和
Target
的关系
适配器模式中“被适配的类
Adaptee
”和“客户调用的接口
Target
”是没有关联的,也就是说,
Adaptee
和
Target
中的方法既可以相同,也可以不同。极端情况下两个接口的方法可以完全不同。
3.
适配器模式调用的顺序
①调用客户端需要的功能
②这个功能会由适配器实现
③适配器会转调“被适配对象”的功能。
参考文档:
http://www.cnblogs.com/god_bless_you/archive/2010/06/11/1756019.html
适配器模式
http://blog.csdn.net/xw13106209/article/details/7001746
适配器模式
- 大小: 21.1 KB
- 大小: 26.1 KB
分享到:
相关推荐
在编程领域,适配器(Adapter)模式是一种结构型设计模式,它允许两个不兼容的接口之间进行通信。在Java中,适配器模式经常被用来解决类与类之间接口不匹配的问题,使得原本无法一起工作的类能够协同工作。本教程将...
适配器模式是一种结构型设计模式,其主要目的是解决接口不兼容问题,使得原本由于接口差异无法协同工作的类能够一起工作。适配器模式通过创建一个新的类(适配器),将旧的接口转换成目标接口,从而实现了系统的解耦...
适配器模式(adaptor) 桥接模式(bridge) 组合模式(composite) 装饰器模式(decorate) 外观模式(facecade) 享元模式(flyweight) 代理模式(proxy) 行为型模式(behaviour) 责任链模式(chainrespon) 命令模式(commond) ...
适配器设计模式是软件设计领域中的一种经典模式,它在iOS开发中也广泛应用。适配器模式的主要目的是解决系统中不同组件之间的接口不兼容问题,通过创建一个适配器对象,将原有接口转换为所需的接口,使得原本不兼容...
DBus通讯方式中,设置适配器Adaptor和Interface的通讯方式比较麻烦,重点在于适配器类(Adaptor类)和接口类(Interface类)的生成,Qt有工具可以自动生成相应的类。※建议Qt中DBus通讯使用Interface-Connection方式...
DBus通讯方式中,设置适配器Adaptor和Interface的通讯方式比较麻烦,重点在于适配器类(Adaptor类)和接口类(Interface类)的生成,Qt有工具可以自动生成相应的类。※建议Qt中DBus通讯使用Interface-Connection方式...
USB2.0 Ethernet Adapter是USB2.0接口的以太网适配器即网卡。 把USB有线网卡插入一个可用的USB接口此时,Windows会提示发现新硬件,并自动搜索安装驱动,有一些USB网卡可以直接自动安装好驱动。此时,在Windows的...
1.概念:将两个不兼容的类纠合在一起使用,属于结构型模式,需要有Adaptee(被适配者)和Adaptor(适配器)两个身份. 2.为何使用:我们经常碰到要将两个没有关系的类组合在一起使用,第一解决方案是:修改各自类的接口,...
TAP Windows适配器V9:当安装软件或登录时,遇到TAP驱动未安装或已损坏的提示时,检查是否安装 TAP Windows适配器V9。 检查方法: 1.按 Windows + R 一起启动运行窗口。 2.输入命令 devmgmt.msc 进入盒子。 击中 ...
对于USB 2.0 10/100M Ethernet Adapter来说,其中的"10/100M"表示适配器支持10Mbps和100Mbps两种以太网速度。这是以太网技术的一个标准,提供不同速率的选择以适应不同网络环境的需求。这种适配器通常采用Realtek、...
3. **Ethernet Adaptor**:以太网适配器,也称为网卡,是计算机内部用于连接网络的硬件组件。在USB 2.0 10/100M Ethernet Adaptor的案例中,它是一个外部设备,通过USB接口插入计算机,提供网络连接功能,无需内置...
"Ethernet Adaptor"是网卡的一种类型,指的是遵循以太网标准的网络适配器。以太网是目前最普遍采用的局域网(LAN)技术,其基础是IEEE 802.3标准。本文将深入探讨以太网适配器的工作原理、驱动程序的作用以及如何...
文档《M-Adaptor-Android二次开发手册v1.0.0doc.doc》详细介绍了如何使用M-Adaptor进行应用的二次开发,包括框架的安装、配置、适配器的使用方法、JS与Activity交互的实例等,是开发者掌握M-Adaptor的重要参考资料。...
Apple USB Ethernet Adapter Drivers是一款专为苹果设备设计的硬件驱动程序,用于在没有Wi-Fi或需要更稳定网络连接的情况下,通过USB接口提供有线以太网连接。这款驱动支持Windows XP操作系统,使得用户可以在非Mac...
2. **10/100M Ethernet**:10/100M指的是适配器支持两种速度模式,10Mbps和100Mbps,是标准以太网速度。它适用于家庭、办公室等场景,能提供稳定且足够的网络速度进行日常上网、文件传输等活动。 3. **有线网卡驱动...
【音频适配器audio_adaptor】是针对CSR公司Audio-Adaptor-SDKRC3.1平台设计的一款专门处理蓝牙音频传输的程序。CSR是一家知名的半导体公司,尤其在蓝牙技术领域有着深厚的积累。此项目旨在为开发者提供一个集成的...
描述“Switching adaptor 0-30 volts / 3A”进一步确认了这个适配器的规格,它是一个开关模式电源(Switching Mode Power Supply,简称SMPS),能够提供0到30伏的可调电压,并且最大电流能力为3安培。开关模式电源...
适配器模式(adaptor) 桥接模式(bridge) 组合模式(composite) 装饰器模式(decorate) 外观模式(facecade) 享元模式(flyweight) 代理模式(proxy) 行为型模式(behaviour) 责任链模式(chainrespon) 命令模式(commond) ...
允许 crudbrella 与猫鼬一起工作##Installation 安装 nodeJS、您选择的数据库和 crudbrella 后,通过 npm 安装此适配器 npm install adaptor-crudbrella-mongoose##Options ###Populate 要使用存储在另一个集合中的...