Java学设计模式之适配器模式
一、适配器模式概念
1.1 什么是适配器模式
适配器模式是一种结构型设计模式,它提供了一种将不兼容的接口转化为兼容的接口的方式,从而使原本无法一起工作的类可以协同工作。适配器模式可以分为两种:对象适配器和类适配器。
1.2 对象适配器
对象适配器通过组合的方式,将不兼容的接口适配为所需的接口。这种方式通常使用一个适配器类来组合目标接口和现有接口,并将现有接口的方法转换为目标接口的方法。
1.3 类适配器
类适配器通过继承的方式,将不兼容的接口适配为所需的接口。这种方式通常使用多重继承(在 Java 中是继承类并实现接口)来实现适配。
二、对象适配器模式代码
2.1 目标接口
public interface Target {
void request();
}
2.2 源接口
public class Adaptee {
public void specificRequest() {
System.out.println("Adaptee specificRequest");
}
}
2.3 适配器
public class Adapter implements Target {
private Adaptee adaptee;
public Adapter(Adaptee adaptee) {
this.adaptee = adaptee;
}
@Override
public void request() {
// 将目标接口的 request 方法转换为源接口的 specificRequest 方法
adaptee.specificRequest();
}
}
2.4 测试类
public class AdapterPatternTest {
public static void main(String[] args) {
Adaptee adaptee = new Adaptee();
Target target = new Adapter(adaptee);
// 调用目标接口的方法
target.request();
// 输出:Adaptee specificRequest
}
}
三、类适配器模式代码
3.1 目标接口
public interface Target {
void request();
}
3.2 源接口
public class Adaptee {
public void specificRequest() {
System.out.println("Adaptee specificRequest");
}
}
3.3 适配器
public class Adapter extends Adaptee implements Target {
@Override
public void request() {
super.specificRequest();
}
}
3.4 测试类
public class AdapterPatternTest {
public static void main(String[] args) {
Target target = new Adapter();
// 调用目标接口的方法
target.request();
// 输出:Adaptee specificRequest
}
}
四、总结
适配器模式的优点包括:
- 增强了系统的灵活性和可扩展性。
- 可以让不兼容的接口之间的代码协同工作。
缺点包括:
- 增加了代码的复杂度。
- 可能增加维护的成本。
适配器模式适用于希望让不同接口之间的代码可以协同工作的场景,例如希望使用现有库,但其接口不兼容时。