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 源进行适配。