您好,登錄后才能下訂單哦!
這篇文章主要介紹“Java設計模式的適配器模式怎么實現”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“Java設計模式的適配器模式怎么實現”文章能幫助大家解決問題。
適配器模式(Adapter)的定義如下: 將一個類的接口轉換成客戶希望的另外一個接口,使得原本由于接口不兼容而不能一起工作的那些類能一起工作。適配器模式分為類結構型模式和對象結構型模式兩種,前者類之間的耦合度比后者高,且要求程序員了解現有組件庫中的相關組件的內部結構,所以應用相對較少些。
1、客戶端通過適配器可以透明地調用目標接口。
2、復用了現存的類,程序員不需要修改原有代碼而重用現有的適配者類。
3、將目標類和適配者類解耦,解決了目標類和適配者類接口不一致的問題。
4、在很多業務場景中符合開閉原則。
1、適配器編寫過程需要結合業務場景全面考慮,可能會增加系統的復雜性。
2、增加代碼閱讀難度,降低代碼可讀性,過多使用適配器會使系統代碼變得凌亂。
類適配器模式: 可采用多重繼承方式實現,如 C++ 可定義一個適配器類來同時繼承當前系統的業務接口和現有組件庫中已經存在的組件接口;Java 不支持多繼承,但可以定義一個適配器類來實現當前系統的業務接口,同時又繼承現有組件庫中已經存在的組件。
對象適配器模式: 可釆用將現有組件庫中已經實現的組件引入適配器類中,該類同時實現當前系統的業務接口。現在來介紹它們的基本結構。
案例: 虹貓利用火晶石催發火舞旋風劍氣
目標(Target)接口:長虹劍氣
適配者(Adaptee)類:火舞旋風劍氣
適配器(Adapter)類:火晶石
虹貓目前只能催發長虹劍氣,但是他想催發火舞旋風劍氣
只能借助火晶石的力量來將長虹劍氣轉化為火舞旋風劍氣
注意: 我這里是讓火舞旋風劍氣適配長虹劍氣
聲明一個長虹劍氣的接口,包含一個催動長虹劍氣的抽象方法
public interface Chang { void chang(); }
火舞旋風劍氣類,聲明一個催發火舞旋風劍氣的方法。
public class Huo { public void huo() { System.out.println("火舞旋風劍氣"); } }
火晶石類,繼承火舞旋風劍氣類(目的:繼承了就可以使用類里面的方法),實現了長虹劍氣接口(目的:實現催發長虹劍氣的方法)。在催發長虹劍氣的方法中調用了催發火舞旋風劍氣的方法。
public class JingShi extends Huo implements Chang { @Override public void chang() { huo(); } }
public class Demo { public static void main(String[] args) { Chang haha = new JingShi(); haha.chang(); } }
聲明一個長虹劍氣的接口,包含一個催動長虹劍氣的抽象方法
public interface Chang { void chang(); }
火舞旋風劍氣類,聲明一個催發火舞旋風劍氣的方法。
public class Huo { public void huo() { System.out.println("火舞旋風劍氣"); } }
火晶石類,實現了長虹劍氣接口,聲明了一個火舞旋風劍氣屬性,并實現了催發長虹劍氣的方法。將催動火舞旋風劍氣的方法放在了催動長虹劍氣的方法中。
public class JingShi implements Chang { private Huo huo; JingShi() { } JingShi(Huo huo) { this.huo = huo; } @Override public void chang() { huo.huo(); } }
new一個火舞旋風劍氣對象,new一個火晶石對象,并將火舞旋風劍氣對象傳入火晶石對象中。
public class Demo { public static void main(String[] args) { Huo huo = new Huo(); Chang haha = new JingShi(huo); haha.chang(); } }
關于“Java設計模式的適配器模式怎么實現”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。