將一個類的接口轉換成客戶端期望的另一個接口,解決接口不兼容問題。
代碼示例:
// 目標接口(客戶端期望的格式)
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("你好適配器!"); }
}
使用場景:整合第三方庫/遺留代碼、系統接口升級時兼容舊模塊
優點:復用現有代碼;靈活性高
缺點:過度使用會導致系統結構混亂?