适配器 (Adapter)
适配器 (Adapter) 是一种结构型设计模式,将一个类的接口转换成客户希望的另外一个接口,使原本由于接口不兼容而不能一起工作的类能够协同工作,起中介作用。
- 已有类(被适配者)的接口与客户端期望的接口不一致,无法直接调用。
- 不想修改已有类或客户端,希望通过一层“转换”复用已有实现。
- 定义目标接口:客户端依赖的接口。
- 适配器实现目标接口,内部持有被适配者(Adaptee)的引用,在目标接口方法中调用被适配者的方法并做参数/返回值转换。
- 客户端只依赖目标接口,通过适配器间接使用被适配者。
classDiagram
class Target {
<<interface>>
+request()* void
}
class Adapter {
-adaptee Adaptee
+request() void
}
class Adaptee {
+specificRequest() void
}
class Client
Target <|.. Adapter
Adapter o-- Adaptee
Client ..> Target : uses
Java 示例
Section titled “Java 示例”// 目标接口(客户端期望)public interface Target { void request();}
// 被适配者(已有、接口不兼容)public class Adaptee { public void specificRequest() { System.out.println("Adaptee 原有逻辑"); }}
// 适配器public class Adapter implements Target { private final Adaptee adaptee = new Adaptee();
@Override public void request() { adaptee.specificRequest(); // 转调并可能做参数/结果转换 }}
// 客户端public class Client { public static void main(String[] args) { Target target = new Adapter(); target.request(); // 输出: Adaptee 原有逻辑 }}适配器在不修改已有类的前提下,通过实现目标接口并委托给被适配者,解决接口不兼容问题,便于复用遗留代码或第三方库。