跳转到内容

适配器 (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
// 目标接口(客户端期望)
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 原有逻辑
}
}

适配器在不修改已有类的前提下,通过实现目标接口并委托给被适配者,解决接口不兼容问题,便于复用遗留代码或第三方库。