您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關java設計模式中適配器模式的示例分析的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
結構型模式有什么好處?
從程序的結構上實現松耦合,從而可以擴大整體的類結構,用來解決更大的問題
USB網線轉換器
將一個類的接口轉換成客戶希望的另外一個接口。Adapter模式使得原本接口不兼容而不能一起工作的那些類能夠變得在一起工作!
目標接口:客戶所期待的接口,目標可以是具體的或抽象的類,也可以是接口
需要適配的類:需要適配的類或適配者類
適配器:通過包裝一個需要適配的對象,把原接口轉換成目標對象!
例子:
適配的類:網線
package com.jialidun.gof.adapter; //要被適配的類:網線 public class Adaptee { public void request(){ System.out.println("連接網線上網!"); } }
接口轉換器的抽象方法
package com.jialidun.gof.adapter; //接口轉換器的抽象實現 public interface NetToUsb { //作用:處理請求 網線插到USB上 public void hanleRequest(); }
真正的適配器,需要連接USB,連接網線
package com.jialidun.gof.adapter; //真正的適配器,需要連接USB,連接網線 //方式1 繼承(類適配器、單繼承) public class Adapter extends Adaptee implements NetToUsb{ @Override public void hanleRequest() { super.request();//可以上網了 } }
創建客戶端,需要上網,網線不匹配
package com.jialidun.gof.adapter; //客戶端類:想上網,插不上網線 public class Computer { //我們的電腦需要連接上轉接器才可以上網 public void net(NetToUsb adapter){ //上網的具體實現,找一個轉接頭 adapter.hanleRequest(); } public static void main(String[] args) { //電腦 適配器 網線 Computer computer = new Computer();//電腦 Adaptee adaptee = new Adaptee();//網線 Adapter adapter = new Adapter();//轉接器 computer.net(adapter); } }
上面的例子有局限性,盡量不使用繼承,修改方法
修改適配器
package com.jialidun.gof.adapter; //方式2 組合(對象適配器、常用) public class Adaapter2 implements NetToUsb{ private Adaptee adaptee; public Adaapter2(Adaptee adaptee){ this.adaptee = adaptee; } @Override public void hanleRequest() { adaptee.request(); } }
客戶端
package com.jialidun.gof.adapter; //客戶端類:想上網,插不上網線 public class Computer { //我們的電腦需要連接上轉接器才可以上網 public void net(NetToUsb adapter){ //上網的具體實現,找一個轉接頭 adapter.hanleRequest(); } public static void main(String[] args) { //電腦 適配器 網線 // Computer computer = new Computer();//電腦 // Adaptee adaptee = new Adaptee();//網線 // Adapter adapter = new Adapter();//轉接器 // // computer.net(adapter); Computer computer = new Computer();//電腦 Adaptee adaptee = new Adaptee();//網線 Adaapter2 adaapter2 = new Adaapter2(adaptee); adaapter2.hanleRequest(); } }
1.一個對象適配器可以把多個不同的適配者適配到同一個目標。
2.可以適配一個適配者的子類,由于適配器和適配者之間是關聯關系,根據"里氏替換原則",適配者的子類也可通過該適配器進行適配。
對于Java、C#等不支持多重類繼承的語言,一次最多只能適配一個適配者類,不能同時適配多個適配者;
在Java、C#等語言中,類適配器模式中的目標抽象類只能為接口,不能為類,其使用有一定的局限性。
系統需要使用一些現有的類,而這些類的接口(如方法名)不符合系統的需求,甚至沒有這些類的源代碼。
想創建一個重復使用的類,用于與一些彼此之間沒有太大關聯的一些類,包括一些可能在將來引進的類一起工作。
例如SpringMVC中DispacherServlet、HandlerAdpter等
感謝各位的閱讀!關于“java設計模式中適配器模式的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。