`

适配器模式——Adaptor(Adapter)

 
阅读更多

适配器模式 —— 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
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics