定義:
介面卡模式把乙個類的介面變換成客戶端所期待的另一種介面,從而使原本因介面不匹配而無法在一起工作的兩個類能夠在一起工作。
概念:
介面卡模式是一種結構型模式,對類物件進行結構上的組合,解決一些**結構問題。 介面卡這個詞簡單的解釋就是對接,把兩個原本沒有辦法連線轉換的事務進行乙個對接,轉換。如果是放到**上來理解的話就是通過**進行乙個替換。把需要被替換的部分換成新的部分。
下面舉個例子就是我們的蘋果和安卓的充電頭,常常沒辦法通用,這個時候就有人提供乙個轉換器,把他們對接起來,實際上就是完成了乙個替換。
**示例:
1.首先定義乙個安卓部件的介面
public inte***ce androidpartsinte***ce
2.安卓充電接頭實現這個介面 給android手機充電
public class androidpartsimp implements androidpartsinte***ce
}
3.使用這個介面進行充電咯,乙個充電的工具類,傳入乙個android充電接介面部件,然後進行充電
public class chargeutils
public void use()
}
4.上面的**沒什麼好說的,真正的呼叫也很簡單
androidpartsinte***ce androidpartsimp = new androidpartsimp();
chargeutils chargeutils = new chargeutils(androidpartsimp); // 充電的工具類
chargeutils.use();
就這麼簡單的使用起來, 輸出的是「安卓手機充電中…」, 現在有個問題來了,如果你只有乙個蘋果的接**怎麼對安卓手機充電呢,這個時候介面卡就登場了。想象一下,適配蘋果到安卓,那他必定是要把兩者結合起來,對於程式來說,我們自然回想到繼承、實現、依賴、組合等等方法。
1.讓介面卡繼承安卓介面,實現安卓介面的功能。
2.通過構造器的引數傳入蘋果介面物件
3.再在安卓介面的地方,替換成使用蘋果的介面。
這樣就悄無聲息的把安卓介面適配上蘋果的介面了
public class adapterimp implements androidpartsinte***ce
@override
public void androidparts()
}
下面是定義的蘋果介面和具體實現
}// 具體實現
@override
log.e("tag", "使用蘋果介面充電中...");
}} 那具體怎麼呼叫呢?
//androidpartsinte***ce androidpartsimp = new androidpartsimp();
//chargeutils chargeutils = new chargeutils(androidpartsimp ); // 用安卓介面充電
chargeutils chargeutils = new chargeutils(adapterimp); // 通過介面卡使用蘋果介面充電
chargeutils.use();
注釋掉的兩行**是用安卓的介面進行充電,現在我們沒有安卓的介面了,就搬出乙個適配了蘋果的介面卡出來,為什麼讓她繼承安卓的介面呢,而不是通過組合或者內部類的的方式呢,可以看到這樣的話就可以把介面卡物件當作安卓介面傳到充電工具類中,這樣可以復用之前的**而不需要做什麼修改。
這樣就完成了介面轉換,實現適配。
高階分析:
上面寫了一大堆的類和介面,感覺有點繞。我們來拆解一下,不搞那些貌似花裡胡哨的東西。
我回想自己的編碼過程就是按上面這樣的思維和路徑一步步公升級的。剛開始寫**的時候遇到這樣的問題就是直接繼承,強行擼碼,後來遇到繼承不了的情況就會到了第二種階段,哪有什麼面向介面程式設計,慢慢的才意識到抽象介面的使用。這樣的乙個認識深入的過程是學習和經驗的積累。想起當時看設計模式的時候也是經常想不明白為什麼會要這樣處理,顯得大費周折,現在想想只能用年輕來形容。
JAVA設計模式 介面卡模式
介面卡模式 要點 1 介面卡模式主要應用於 希望復用一些現存的類,但是介面又與復用環境要求不一致的情況 在遺留 復用 類庫遷移等方面非常有用。2 介面卡模式有物件介面卡和類介面卡兩種形式的實現結構,但是類介面卡採用 多繼承 的實現方式,帶來了不良的高耦合,所以一般不推薦使用。物件介面卡採用 物件組合...
java設計模式 介面卡模式
介面卡模式把乙個類的介面變換成客戶端所期待的另一種介面,從而使原本因介面不匹配而無法在一起工作的兩個類能夠在一起工作。用電器做例子,膝上型電腦的插頭一般都是三相的,即除了陽極 陰極外,還有乙個地極。而有些地方的電源插座卻只有兩極,沒有地極。電源插座與膝上型電腦的電源插頭不匹配使得膝上型電腦無法使用。...
Java設計模式 介面卡模式
目錄 介面卡模式的個人理解 轉換方法 介面卡模式的定義 通用類圖 角色定義 target目標角色 adaptee源角色 adapter介面卡角色 通用源 介面卡模式的優點 首先有乙個目標角色 乙個源角色還有乙個介面卡角色。我們要做的就是利用介面卡角色將源角色轉換為目標角色。而目標角色是乙個正在良好執...