background image

 

 

Adaptee:现在需要适配的已经存在的接口

public

 

class

 Adaptee{ 

public

 void specificRequest(){}}

 

 

Adapter:对 Adaptee 的接口与 Target 接口进行适配

public

 

class

 Adapter 

implements

 Target{ 

public

 Adapter(Adaptee adaptee) { super(); this.adaptee 

= adaptee; } 

public

 void request() { adaptee.specificRequest(); } 

private

 Adaptee adaptee;}

 

 

适用性:
1. 系统需要使用现有的类,而此类的接口不符合系统的需要。
2. 想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一
些可能在将来引进的类一起工作。这些源类不一定有很复杂的接口。
3. (对对象适配器而言)在设计里,需要改变多个已有子类的接口,如果使用类的适配器
模式,就要针对每一个子类做一个适配器,而这不太实际。
效果及优缺点:
对于类适配器:
1. 用一个具体的 Adapter 类对 Adaptee 和 Taget 进行匹配。结果是当我们想要匹配一个类以及
所有它的子类时,类

Adapter 将不能胜任工作。

2. 使得 Adapter 可以 override(重定义) Adaptee 的部分行为,因为 Adapter 是 Adaptee 的一
个子类。
对于对象适配器:
1. 允许一个 Adapter 与多个 Adaptee,即 Adaptee 本身以及它的所有子类(如果有子类的
话)同时工作。

Adapter 也可以一次给所有的 Adaptee 添加功能。

2. 使得 override(重定义)Adaptee 的行为比较困难。如果一定要 override Adaptee 的方法,
就只好先做一个

Adaptee 的子类以 override Adaptee 的方法,然后再把这个子类当作真正的

Adaptee 源进行适配。