结构型:适配器模式

不兼容结构的协调

适配器模式(Adapter Pattern):将一个接口转换成希望的另一个接口,使接口不兼容的类可以一起工作。其别名为包装器(Wrapper)

  1. 优点
    • 将目标类和被适配类解耦。
    • 增加了类的透明性和复用性。
    • 通过配置文件可以更换适配器类,符合“开闭原则”。
  2. 缺点
    • Java只允许单继承,不能同时适配多个目标类。
    • 目标类不能为 final 类型。

Target.java
1
2
3
4
5
// 目标类
public class Target {
public void request(){
}
}
Adaptee.java
1
2
3
4
5
// 被适配类
public class Adaptee {
public void specRequest(){
}
}
Adapter.java
1
2
3
4
5
6
7
8
9
10
11
12
13
// Adapter和Adaptee在这里是关联关系,也可以使用继承关系。
public class Adapter extends Target {
private Adaptee adaptee;
public Adapter(Adaptee adaptee) {
this.adaptee = adaptee;
}
@Override
public void request() {
adaptee.specRequest();
}
}

适配器变种缺省适配器(Default Adapter Pattern):当不需要实现一个接口所提供的所有方法时,可以设计一个抽象类实现该接口,并为方法提供一个空实现。