您好,登錄后才能下訂單哦!
今天小編給大家分享一下Java適配器模式怎么掌握的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
其實適配器這三個字大家應該很熟悉,我們知道蘋果公司的手機iPhone已經不提供充電插頭了,包裝盒內只有一根數據線,那么我們無法單獨使用這根數據線進行在220V的插板上充電,因此我們需要重新購買一個適配器來把插板和手機連接起來,這就是適配器。
其實在軟件設計中也可能出現,需要開發的具有某種業務功能的組件在現有的組件庫中已經存在,但它們與當前系統的接口規范不兼容,如果重新開發這些組件成本又很高,這時用適配器模式能很好地解決這些問題。
適配器模式: 將一個類的接口轉換成客戶希望的另外一個接口,使得原本由于接口不兼容而不能一起工作的那些類能一起工作。
適配器模式分為類結構型模式和對象結構型模式兩種,前者類之間的耦合度比后者高,且要求程序員了解現有組件庫中的相關組件的內部結構,所以應用相對較少些。
優點:
客戶端通過適配器可以透明地調用目標接口
復用了現存的類,程序員不需要修改原有代碼而重用現有的適配者類
將目標類和適配者類解耦,解決了目標類和適配者類接口不一致的問題
在很多業務場景中符合開閉原則
缺點:
適配器編寫過程需要結合業務場景全面考慮,可能會增加系統的復雜性
增加代碼閱讀難度,降低代碼可讀性,過多使用適配器會使系統代碼變得凌亂
(以下結構參考自互聯網)
模式的結構:
目標(Target)接口: 當前系統業務所期待的接口,它可以是抽象類或接口
適配者(Adaptee)類: 它是被訪問和適配的現存組件庫中的組件接口
適配器(Adapter)類: 它是一個轉換器,通過繼承或引用適配者的對象,把適配者接口轉換成目標接口,讓客戶按目標接口的格式訪問適配者
類適配器模式的結構:
對象適配器模式的結構:
A、使用組合的方式實現適配器:
我們現在有一臺筆記本電腦的插頭的三相的,但是我們現在需要使用二相的插頭進行充電,所以我們需要給這個插頭裝上一個二相的適配器:
三相插座接口:
/** * 三相插座接口 */ public interface ThreePlugIf { //使用三相電流供電 public void powerWithThree(); }
國標的二相插座:
/** * 國標的二相插座 */ public class GBTowPlug { public void powerWithTwo(){ System.out.println("使用二相電流供電"); } }
筆記本:
/** * 筆記本 */ public class NoteBook { private ThreePlugIf plug; public NoteBook(ThreePlugIf plug){ this.plug = plug; } //使用插座充電 public void charge(){ plug.powerWithThree(); } }
三相轉二相的插座適配器:
/** * 三相轉二相的插座適配器 */ public class TwoPlugAdapter implements ThreePlugIf { private GBTowPlug plug; public TwoPlugAdapter(GBTowPlug plug) { this.plug = plug; } @Override public void powerWithThree() { System.out.println("通過轉換"); plug.powerWithTwo(); } }
測試類:
public class Test { public static void main(String[] args) { GBTowPlug two = new GBTowPlug(); ThreePlugIf three = new TwoPlugAdapter(two); NoteBook nb = new NoteBook(three); nb.charge(); } }
輸出結果:
通過轉換
使用二相電流供電
采用組合方式的適配器稱為對象適配器
特點:
把“被適配者”作為一個對象組合到適配器類中,以修改目標接口包裝給適配者
B、使用繼承的方式實現適配器:
繼承適配器:
/** * 采用繼承方式的插座適配器 */ public class TwoPlugAdapterExtends extends GBTowPlug implements ThreePlugIf{ @Override public void powerWithThree() { System.out.println("借助繼承適配器"); this.powerWithTwo(); } }
測試類:
public class Test { public static void main(String[] args) { GBTowPlug two = new GBTowPlug(); ThreePlugIf three = new TwoPlugAdapter(two); NoteBook nb = new NoteBook(three); nb.charge(); //使用繼承方法 three = new TwoPlugAdapterExtends(); nb = new NoteBook(three); nb.charge(); } }
輸出:
通過轉換
使用二相電流供電借助繼承適配器
使用二相電流供電
采用繼承方式的稱為類適配器
特點:
通過多重繼承不兼容接口,實現對目標接口的匹配,單一的為某個類而實現適配
之前開發的系統存在滿足新系統功能需求的類,但其接口同新系統的接口不一致
使用第三方提供的組件,但組件接口定義和自己要求的接口定義不同
以上就是“Java適配器模式怎么掌握”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。