概述
- 与电源适配器相似,在适配器模式中引入了一个被称为适配器(Adapter)的包装类,而它所包装的对象称为适配者(Adaptee),即被适配的类。适配器的实现就是把客户类的请求转化为对适配者的相应接口的调用。
- 也就是说:当客户类调用适配器的方法时,在适配器类的内部将调用适配者类的方法,而这个过程对客户类是透明的,客户类并不直接访问适配者类。因此,适配器让那些由于接口不兼容而不能交互的类可以一起工作。
- 定义:将一个类的接口转换成客户希望的另外一个接口。原本由于接口不兼容而不能一起工作的那些类可以一起工作。
- 适配器模式也被称为:包装器(Wrapper)模式;变压器模式。
- 适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。
- 学习难度:★★☆☆☆
- 使用频率:★★★★☆
优缺点
- 优点
- 可以让两个没有关系的类,兼容在一起运行
- 增加类的透明度,复用度,灵活性好
- 缺点
类图
组成角色
- 目标角色(Target)
- 适配器角色(Adapter)
- 被适配角色(Adaptee)
Code Example
目标角色(Target)
public interface Target {
public void request();
}
适配器角色(Adapter)
- 组合被适配的角色
- 重写目标接口方法,中间调用被适配的角色的方法实现
public class Adapter implements Target {
private Adaptee adaptee;
public Adapter(Adaptee adaptee) {
this.adaptee = adaptee;
}
public void request() {
System.out.println("this is in Adapter!");
adaptee.specificRequest();
}
}
被适配角色(Adaptee)
public class Adaptee {
public void specificRequest() {
System.out.println("this is in Adaptee!");
}
}
客户端
public class AdapterPattern {
public static void main(String[] args) {
Target target = new Adapter(new Adaptee());
target.request();
}
}