定義
適配器模式把一個類的接口轉換成客戶端所期待的另一種接口,從而使原本因接口不匹配而無法一起工作的的兩個類能夠在一起工作
使用場景
系統需要使用現有的類,而此類的接口不符合系統的需要,即接口不兼容
想要建立一個可以重複使用的類,用於與一些彼此之間沒有太大關聯的一些類,包括一些可能在將來引進的類一起工作
需要一個統一的輸出接口,而輸入端的類型不可預知
關鍵點
一個目標角色—所期待得到的接口
一個需要被轉換的角色—需要適配的接口
適配器角色—把源接口轉換成目標接口,不可以是接口,只能是類。
實現
以電壓轉換爲例
/**
* 目標接口角色—需要的5伏電壓
*/
public interface FiveVolt {
/**
* 需要5伏電壓
*/
public int getVolt5();
}
/**
* 需要被轉換角色
*/
public class Volt220 {
/**
* 對外輸出的220電壓接口
*/
public int getVolt220() {
return 220;
}
}
/**
* 適配器角色—將220伏電壓轉換成需要的5伏電壓
*/
public class VoltAdapter implements FiveVolt {
private Volt220 volt220;
public VoltAdapter(Volt220 volt220) {
this.volt220 = volt220;
}
@Override
public int getVolt5() {
return 5;
}
}
使用
VoltAdapter adapter = new VoltAdapter(new Volt220());
adapter.getVolt5();
小結
優點
更好的複用性—系統需要現有的類,而此類的接口不符合系統的需要,通過適配器模式就可以讓這些功能得到更好的複用性
更好的擴展性—在實現適配器功能的時候,可以調用自己剋發的功能,從而自然的擴展系統的功能
缺點
過多的使用適配器,會讓系統非常凌亂,不易整體把握。