介面卡模式在介面不一致的情況下,對於封裝介面的差異性,非常有效。
例如:應用程式需要使用google提供的jar包來實現路徑規劃的功能,但是該應用需要在應用程式**(客戶**)不變動的情況支援切換baidu的jar包,那麼對應客戶來說,相同的功能必須保證一致的介面。
但是,google和baidu的jar中,同樣的介面,可能名字並不一樣,那麼就需要進行轉換適配, 在客戶程式看來統一為乙個全新的介面routeinte***ce。
1. 類介面卡(繼承)模式
mygoogleroute extends routegoogle implemets routeinte***ce客戶端**
class routefactory
routeinte***ce ri = routefactory.getroute(getmaptype()); // map type是在初始化時設定的支援切換的變數
ri.route();
2. 物件介面卡(組合)模式
}物件介面卡模式的優勢在於:
上述例子中routebaidu是baidu jar包中的類。如果jar包中的其他api介面的返回值型別是routebaidu,那麼此時可以使用物件介面卡模式,將routebaidu作為構造引數傳入,包裝成mybaiduroute供客戶程式使用。這樣的話,能使客戶端**不想要感知routebaidu類的存在,只需要知道routeinte***ce中的api即可。
如果使用類介面卡模式,從jar api返回的routebaidu是無法轉換成mybaiduroute的。
JAVA設計模式 介面卡模式
介面卡模式 要點 1 介面卡模式主要應用於 希望復用一些現存的類,但是介面又與復用環境要求不一致的情況 在遺留 復用 類庫遷移等方面非常有用。2 介面卡模式有物件介面卡和類介面卡兩種形式的實現結構,但是類介面卡採用 多繼承 的實現方式,帶來了不良的高耦合,所以一般不推薦使用。物件介面卡採用 物件組合...
java設計模式 介面卡模式
介面卡模式把乙個類的介面變換成客戶端所期待的另一種介面,從而使原本因介面不匹配而無法在一起工作的兩個類能夠在一起工作。用電器做例子,膝上型電腦的插頭一般都是三相的,即除了陽極 陰極外,還有乙個地極。而有些地方的電源插座卻只有兩極,沒有地極。電源插座與膝上型電腦的電源插頭不匹配使得膝上型電腦無法使用。...
Java設計模式 介面卡模式
目錄 介面卡模式的個人理解 轉換方法 介面卡模式的定義 通用類圖 角色定義 target目標角色 adaptee源角色 adapter介面卡角色 通用源 介面卡模式的優點 首先有乙個目標角色 乙個源角色還有乙個介面卡角色。我們要做的就是利用介面卡角色將源角色轉換為目標角色。而目標角色是乙個正在良好執...