适配器(Adapter),又被称为包装器(Wrapper)。
当某一场合,客户与某一接口交互,而现有类的接口不满足客户所需接口,可将现有类适配成目标接口,以满足客户需要。
适配器模式包含四部分:
- Target:需求的目标接口
- Adaptee:被适配的原有类
- Adapter:适配器
- Client:客户
适配器可以通过两种方式实现:
- 继承现有类
- 依赖现有对象
Target目标接口:
interface Target {
public void request();
}
Adaptee被适配的原有类:
class Adaptee {
public void specificRequest() {
}
}
1. 继承现有类实现适配器
Adapter适配器:
public class Adapter extends Adaptee implements Target{
@Override
public void request() {
super.specificRequest();
}
}
Client客户:
class Client {
public void request() {
new Adapter().request();
}
}
2. 依赖现有对象实现适配器
Adapter适配器:
public class Adapter implements Target {
private Adaptee adaptee;
public Adapter(Adaptee adaptee) {
this.adaptee = adaptee;
}
@Override
public void request() {
adaptee.specificRequest();
}
}
Client客户:
class Client {
public void request() {
new Adapter(new Adaptee()).request();
}
}