適配器模式的定義
適配器模式(Adapter Pattern)是一種結構型設計模式,用于解決接口不兼容問題。通過將一個類的接口轉換成客戶端期望的另一個接口,使原本因接口不匹配而無法工作的類能夠協同工作。
核心角色
目標接口(Target):客戶端期望的接口,可以是抽象類或接口。
適配器(Adapter):實現目標接口,并持有被適配者的實例,通過調用被適配者的方法實現接口轉換。
被適配者(Adaptee):需要被適配的現有類或接口
實現方式
適配器繼承被適配者并實現目標接口,直接復用被適配者的方法。
類適配器(通過繼承)
適配器繼承被適配者并實現目標接口,直接復用被適配者的方法。
// 目標接口
interface Target {void request();
}// 被適配者
class Adaptee {void specificRequest() {System.out.println("Adaptee method called");}
}// 類適配器
class ClassAdapter extends Adaptee implements Target {@Overridepublic void request() {specificRequest(); // 調用被適配者的方法 }
}
對象適配器(通過組合)
適配器持有被適配者的實例,通過委托調用其方法。
// 對象適配器
class ObjectAdapter implements Target {private Adaptee adaptee;public ObjectAdapter(Adaptee adaptee) {this.adaptee = adaptee;}@Overridepublic void request() {adaptee.specificRequest();}
}
應用場景
1.舊系統接口與新系統不兼容時,通過適配器復用舊代碼。
2.需要使用第三方庫但接口與現有代碼不匹配時。
3.統一多個類的接口以簡化客戶端調用。
示例代碼(客戶端調用)
public class Client {public static void main(String[] args) {// 類適配器調用 Target classAdapter = new ClassAdapter();classAdapter.request();// 對象適配器調用 Adaptee adaptee = new Adaptee();Target objectAdapter = new ObjectAdapter(adaptee);objectAdapter.request();}
}