将一个类的接口转换成客户端期望的另一个接口,解决接口不兼容问题。
代码示例:
// 目标接口(客户端期望的格式)
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();@Overridepublic void printDocument(String text) {// 调用旧类方法并适配参数legacyPrinter.print(text, 1); // 默认打印1份}
}// 客户端调用
public class Client {public static void main(String[] args) {ModernPrinter printer = new PrinterAdapter();printer.printDocument("你好适配器!"); }
}
使用场景:整合第三方库/遗留代码、系统接口升级时兼容旧模块
优点:复用现有代码;灵活性高
缺点:过度使用会导致系统结构混乱