结构型设计模式的一种

【DP】定义

将一个类的接口转换成客户希望的另外的接口,该模式使得原本接口不兼容而不能一起工作的那些类可以一起工作。

使用场景

  1. 需要使用一个类的功能,但是该类的接口不符合使用场合要求的接口,可定制适配器;
  2. 有一个接口定义的行为过多,则可以定义一个缺省适配器,让子类选择性的覆盖适配器的方法,多为定义为抽象类。

类图

适配器模式类图

举例

想要对外暴露的接口如下:

1
2
3
public interface IPrint {
void print(); // 无组织权限的打印功能
}

但是已有的功能是:

1
2
3
public class PrintClass {
void print(String pk_org); // 有权限的打印功能
}

为了适配已有的打印类,需要增加适配器如下:

1
2
3
4
5
6
7
8
9
10
11
public class Adaptor implements IPrint {
private PrintClass printClass; // 被适配的类

@Override
public void print() {
String[] pks = getAllOrgs(); // 获取所有组织
for (String pk : pks) {
printClass.print(pk);
}
}
}

注意事项

  1. 适配器的第一种使用场景最好是在设计初避免,尽量减少适配器的使用,大家使用同一套接口是最好的。