java高階設計模式之介面卡模式
- 定義
將一個類的介面轉換成客戶希望的另外一個介面。介面卡模式使得原本由於介面不相容而
不能一起工作的那些類可以一起工作。
- 介面和說明
- 簡單例項:
- package adaptersimple.example1;
/**
* 已經存在的介面,這個介面需要被適配
*
*
*/
public class Adaptee {
/**
* 示意方法,原本已經存在,已經實現的方法
*/
public void specificRequest() {
//具體的功能處理
}
} - 介面卡
-
public class Adapter implements Target {
/**
* 持有需要被適配的介面物件
*/
private Adaptee adaptee;
/**
* 構造方法,傳入需要被適配的物件
*/
public Adapter(Adaptee adaptee) {
this.adaptee = adaptee;
}
@Override
public void request() {//可能轉調已經實現了的方法,進行適配
adaptee.specificRequest();
} -
/**
* 使用介面卡的客戶端
*/
public class Client{
public static void main(String[] args) {
//建立需要被適配的物件
Adaptee adaptee = new Adaptee();
//建立客戶端需要呼叫的介面物件
Target target = new Adapter(adaptee);
//請求處理
target.request();
}
} -
/**
* 定義客戶端使用的介面,與特定領域相關
*/
public interface Target {
/**
* 示意方法,客戶端請求處理的方法
*/
public void request();
} - 介面卡模式的功能
-
1、 介面卡模式的主要功能就是進行轉換匹配,目的是複用已有的功能,而不是來實現新的介面。
2、介面卡裡面也可以實現功能,稱這種介面卡為智慧介面卡。
四、adaptee和target的關係
介面卡模式中被適配的介面Adaptee和適配稱為的介面Target是沒有關聯的。
五、介面卡的呼叫模式
- 物件組合
-
介面卡的實現方式其實是依靠物件組合的方式。
- 適配的常見例項
- 介面卡通常是一個類,一般會讓介面卡類去實現Target介面,然後在介面卡的具體實現裡面呼叫Adaptee。
- 可以在介面卡的實現裡面,加入新功能的實現,這種介面卡被稱為智慧介面卡。
- 適配多個Adaptee
- 介面卡Adapter實現的複雜程度
-
介面卡Adapter實現的複雜程度,取決於Target和Adaptee的相似程度。
- 預設適配
-
預設適配的意思是:為一個介面提供預設實現
-
介面卡模式的優缺點
1:更好的複用性
2:更好的可擴充套件性
3:過多的使用介面卡,會讓系統非常凌亂,不容易整體進行把握。
介面卡模式的本質
介面卡模式的本質是:轉換匹配,複用功能
何時選用介面卡模式
1、如果你想要使用一個已經存在的類,但是它的介面不符合你的需求,這種情況可以使用介面卡模式。
來把已有的實現轉換成你需要的介面。
2、如果你想建立一個可以複用的類,這個類可能和一些不相容的類一起工作,這種情況可以使用介面卡模式,到時需要什麼
就適配什麼。
3、如果你想使用一些已經存在的子類,但是不可能對每一個子類都進行適配,這種情況可以選用物件介面卡,
直接適配這些子類的父類就可以了。