Java 設計模式之適配器模式詳解
定義
適配器將一個類的接口,轉換成客戶期望另一個接口。適配器讓原本不兼容的類可以合作無間
結構圖
如圖所示,兩腳插頭如何能插入三腳插座,可以在中間加一個適配器進行轉換,就能實現兩腳插頭能插入三腳插座。
使用場景
- 新的代碼兼容舊的代碼
- 使用別人好的代碼到自己的代碼中
代碼實現
適配器模式有:對象適配器和類適配器
Java代碼實現
java沒有多繼承,隻能實現對象適配器
先創建兩個接口
// 適配目標接口 public interface Target{ public void aaa(); }
// 適配者接口 public interface Adaptee{ public void bbb(); }
實現這兩個接口
public class Targetimpl implements Target{ public void aaa(){ System.out.printnln("Target") } }
public class Adapteeimpl implements Adaptee{ public void bbb(){ System.out.printnln("Adaptee") } }
制作適配器
需要實現要適配成什麼接口,需要實現什麼接口
public class Adapter implements Target{ Adaptee adaptee; public Adapter(Adaptee adapter){ this.adaptee = adaptee; } public void aaa(){ adaptee.bbb() } }
public class Run{ public static void main(String[] args){ Adaptee adaptee = new Adatee(); Target target = new Targetimpl(); Target adapter = new Adapter(target); adaptee.aaa(); target.bbb(); adapter.aaa(); } }
運行結果:
Target
Adaptee
Adaptee
Python代碼實現
Python可以實現對象適配器和類適配器
這是對象適配器
# 適配目標 class Target(object): def aaa(self): print("Target") # 被適配者 class Adaptee(object): def bbb(self): print("Adaptee") # 這是適配器 class Adapter(Target): def __init__(self, Adaptee): self.Adaptee = Adaptee def aaa(self): self.Adaptee.bbb() target = Target() adaptee = Adaptee() adapter = Adapter(adaptee) target.aaa() adaptee.bbb() adapter.aaa()
運行結果:
Target
Adaptee
Adaptee
這是類適配器
class Target(object): def aaa(self): print("Target") class Adaptee(object): def bbb(self): print("Adaptee") class Adapter(Target, Adaptee): def aaa(self): self.bbb() target = Target() adaptee = Adaptee() adapter = Adapter() target.aaa() adaptee.bbb() adapter.aaa()
運行結果:
Target
Adaptee
Adaptee
到此這篇關於Java 設計模式之適配器模式詳解的文章就介紹到這瞭,更多相關Java 設計模式內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!