適配器模式(Adapter)的定義如下: 將一個類別的介面轉換成客戶希望的另一個接口,使得原本由於介面不相容而不能一起工作的那些類別能一起工作。適配器模式分為類別結構型模式和物件結構型模式兩種,前者類別之間的耦合度比後者高,且要求程式設計師了解現有元件庫中的相關元件的內部結構,所以應用相對較少些。
1、客戶端透過適配器可以透明地呼叫目標介面。
2、重複使用了現存的類別,程式設計師不需要修改原有程式碼而重複使用現有的適配者類別。
3、將目標類別和適應者類別解耦,解決了目標類別和適配者類別介面不一致的問題。
4、在許多業務場景中符合開閉原則。
1、適配器編寫過程需要結合業務場景全面考慮,可能會增加系統的複雜性。
2、增加程式碼閱讀難度,降低程式碼可讀性,過度使用適配器會使系統程式碼變得凌亂。
類別適配器模式: 可採用多重繼承方式實現,如C 可定義一個適配器類別來同時繼承當前系統的業務介面和現有元件庫中已經存在的元件接口;Java 不支援多重繼承,但可以定義一個適配器類別來實作目前系統的業務接口,同時又繼承現有元件庫中已經存在的元件。
物件適配器模式: 可釆用將現有元件庫中已經實作的元件引入適配器類別中,該類別同時實作目前系統的業務介面。現在來介紹它們的基本結構。
案例:虹貓利用火晶石催發火舞旋風劍氣
目標(Target)介面:長虹刀劍氣
適配器(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(); } }
public class Demo { public static void main(String[] args) { Huo huo = new Huo(); Chang haha = new JingShi(huo); haha.chang(); } }
以上是Java設計模式的適配器模式怎麼實現的詳細內容。更多資訊請關注PHP中文網其他相關文章!