介面卡模式把乙個類的介面變換成客戶端所期待的另一種介面,從而使原本因介面不匹配而無法在一起工作的兩個類能夠在一起工作。
用電器做例子,膝上型電腦的插頭一般都是三相的,即除了陽極、陰極外,還有乙個地極。而有些地方的電源插座卻只有兩極,沒有地極。電源插座與膝上型電腦的電源插頭不匹配使得膝上型電腦無法使用。這時候乙個三相到兩相的轉換器(介面卡)就能解決此問題,而這正像是本模式所做的事情。
介面卡模式有類的介面卡模式和物件的介面卡模式兩種不同的形式。
模式所涉及的角色有:
●目標(target)角色:這就是所期待得到的介面。注意:由於這裡討論的是類介面卡模式,因此目標不可以是類。
●源(adapee)角色:現在需要適配的介面。
●介面卡(adaper)角色:介面卡類是本模式的核心。介面卡把源介面轉換成目標介面。顯然,這一角色不可以是介面,而必須是具體類。
1.類適配模式
在地球時代,所有坐騎都是只能跑,不能飛的,而現在很多坐騎在地球都可以飛了。假設,地球時代的坐騎只能跑,而現在的坐騎不僅能飛還能跑,我們可以用類適配模式來實現,要點是,介面卡繼承源類,實現目標介面:
/**
* doc 源
* */
public class sources
}
/**
* doc 目標介面
* */
public inte***ce itarget
/**
* doc 繼承源類,實現目標介面,從而實現類到介面的適配
* */
public class adapter extends sources implements itarget
}
2.物件適配模式
假設乙個介面卡要適配多個物件,可以將這些物件引入到介面卡裡,然後通過呼叫這些物件的方法即可:
/**
* * doc 源物件,只有跑的功能
* */
public class animal
}
/**
* doc 目標介面,既能跑,又能飛
* */
public inte***ce itarget
/**
* doc 通過建構函式引入了源物件,並實現了目標的方法
* */
public class adapter implements itarget
/**
* doc 拓展介面要求的新方法
*/
public void fly()
/**
* doc 使用源物件的方法
*/
public void run()
}
這裡有個例子有助於更好的理解介面卡模式:
JAVA設計模式 介面卡模式
介面卡模式 要點 1 介面卡模式主要應用於 希望復用一些現存的類,但是介面又與復用環境要求不一致的情況 在遺留 復用 類庫遷移等方面非常有用。2 介面卡模式有物件介面卡和類介面卡兩種形式的實現結構,但是類介面卡採用 多繼承 的實現方式,帶來了不良的高耦合,所以一般不推薦使用。物件介面卡採用 物件組合...
Java設計模式 介面卡模式
目錄 介面卡模式的個人理解 轉換方法 介面卡模式的定義 通用類圖 角色定義 target目標角色 adaptee源角色 adapter介面卡角色 通用源 介面卡模式的優點 首先有乙個目標角色 乙個源角色還有乙個介面卡角色。我們要做的就是利用介面卡角色將源角色轉換為目標角色。而目標角色是乙個正在良好執...
Java設計模式 介面卡模式
介面卡模式 adapter 將某個類的介面轉換成客戶端期望的另乙個介面表示,目的是消除由於介面不匹配所造成的類的相容性問題。1 目標介面 target 客戶所期待的介面,目標可以是具體的或抽象的類,也可以是介面 2 需要適配的類 original 需要適配的物件 3 介面卡 adapter 通過包裝...