将一个类的接口转换成客户端期望的另一个接口,解决接口不兼容问题。
代码示例:
java
// 目标接口(客户端期望的格式)
interface ModernPrinter {
void printDocument(String text);
}
// 被适配的旧类(不兼容)
class LegacyPrinter {
void print(String message, int copies) {
for (int i = 0; i < copies; i++) {
System.out.println("旧类打印: " + message);
}
}
}
// 适配器类(转换接口)
class PrinterAdapter implements ModernPrinter {
private final LegacyPrinter legacyPrinter = new LegacyPrinter();
@Override
public void printDocument(String text) {
// 调用旧类方法并适配参数
legacyPrinter.print(text, 1); // 默认打印1份
}
}
// 客户端调用
public class Client {
public static void main(String[] args) {
ModernPrinter printer = new PrinterAdapter();
printer.printDocument("你好适配器!");
}
}

**使用场景:**整合第三方库/遗留代码、系统接口升级时兼容旧模块
**优点:**复用现有代码;灵活性高
**缺点:**过度使用会导致系统结构混乱