定义
Adapter Pattern:将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以作为类结构模式,也可以作为对象结构模式。
UML示例
代码示例
对象适配器
// 适配者类
public class Adaptee{
public void specificRequest(){
};
}
// 目标类(可以是抽象类,接口或具体类)
public class Target{
public void request(){
}
}
// 适配器类
public class Adapter extends Target{
// 保持对适配者对象的引用,即关联关系
private Adaptee adaptee;
public Adapter(){
adaptee = new Adaptee();
}
public void request() {
adaptee.specificRequest();
}
}
// 客户端
public class Client {
public static void main(String[] args) {
Target a = new Adapter();
a.request();
}
}
类适配器
与对象适配器不同在于,其适配器和适配者之间的关系是继承关系,适配器和目标类(抽象角色)的关系是实现关系。
双向适配器
对象适配器的一个特别情况:如果在适配器中同时包含对目标类和适配者类的引用,适配者可以通过它调用目标类的方法,目标类亦可以通过它调用适配者类的方法,那么该适配器就是双向适配器。
缺省适配器
适配器模式的一个变体,应用广泛。
定义:当不需要实现一个接口所提供的所有方法,可先设计一个抽象类实现该接口,并为接口中每个方法提供一个默认实现(空方法),那么该抽象类的子类可以选择性地覆盖父类地某些方法来实现需求,它适用于不想使用一个接口中所有方法的情况。又称单接口适配器模式。