介紹
適配器模式把一個類的接口變換成客戶端所期待的另一種接口,從而使原本因接口不匹配而無法在一起工作的兩個類能夠在一起工作。
使用場景:
1.系統(tǒng)需要使用現(xiàn)有的類,而此類的接口不符合系統(tǒng)的需要,即接口不兼容。
2.想要建立一個可以重復使用的類,用于與一些彼此之間沒有太大關聯(lián)的一些類,包括一些可能在將來引進的類一起工作。
3.需要一個統(tǒng)一的輸出接口,而輸入端的類型不可預知。
優(yōu)點:
1.更好的復用性。
2.更好的擴展性。在實現(xiàn)適配器功能的時候,可以調(diào)用自己開發(fā)的功能,從而自然地擴展系統(tǒng)地功能。
缺點:
1、過多地使用適配器,會讓系統(tǒng)非常零亂,不易整體進行把握。比如,明明看到調(diào)用的是 A 接口,其實內(nèi)部被適配成了 B 接口的實現(xiàn),一個系統(tǒng)如果太多出現(xiàn)這種情況,無異于一場災難。因此如果不是很有必要,可以不使用適配器,而是直接對系統(tǒng)進行重構。 2.由于 JAVA 至多繼承一個類,所以至多只能適配一個適配者類,而且目標類必須是抽象類。
UML類圖

Adapter.jpg
代碼實現(xiàn)
TypeC.java
public interface TypeC {
public TypeC getType();
}
Usb.java
public class Usb {
public Usb getUsb() {
return this;
}
}
Adapter.java
public class Adapter implements TypeC {
private Usb usb;
public Adapter(Usb usb) {
this.usb = usb;
}
public Usb getUsb() {
return usb;
}
@Override
public TypeC getType() {
return this;
}
}