介面卡模式

2021-08-08 20:24:17 字數 2049 閱讀 9773

定義:

將乙個類的介面轉換成客戶希望的另乙個介面。

角色:

target(目標物件):客戶期望的目標物件,可以使具體物件或者介面 對應上圖 中的廠商類

adaptee(需要適配的類):需要適配的類,上圖中 現有的系統

adapter(介面卡):介面卡 把原介面轉換成目標介面

方式:常用有 類介面卡 和 物件介面卡

類介面卡:採用繼承實現

物件介面卡 :採用組合實現

物件介面卡:

例子:老虎  ,貓,  想要把貓 偽裝成老虎

target 目標介面:

public inte***ce targetservice
target的具體想要的結果:

public class tiger implements targetservice 

}

原目標:

public class cat 

}

介面卡:

public class adapter implements targetservice 

@override

public void

say()

}

客戶端呼叫:

public class client 

private static void

split()

}

結果:

i am tiger.

---------------------------

i am cat.

---------------------------

i am cat. but now i am tiger

---------------------------

類介面卡:

**介面卡:

public class adapter1 extends cat implements targetservice 

}

客戶端:

public class client1 

private static void

split()

}

執行結果:

i am tiger.

---------------------------

i am cat.

---------------------------

i am cat. but now i am tiger

---------------------------

優缺點:

優點:

1. 通過介面卡,客戶端可以呼叫同乙個介面,對客戶端是透明的,減少了呼叫的複雜性

2. 實現了類的復用,解決了現存的類  和 復用環境 要求不一致的問題

3. 通過引入介面卡 ,將目標 類 和適配者類 進行解耦,通過引入介面卡類實現  對 修改封閉

4. 物件介面卡 使用組合 ,可以通過引入 適配者的抽象類,實現 把適配者的子類 都 適配到 目標介面

缺點:對於物件介面卡,更換介面卡的實現比較麻煩

使用場景:

1. 系統需要使用已經現有的類,但是這些類 和目標介面不一致

2.兩個類 所做的事情相同或者相似,但是具有不同的介面

3.舊的系統  已經實現了一些功能,但是客戶端只能以另外的介面進行訪問,但是我們不希望 更改原來的系統

4.使用 第三方元件,元件定義的介面 和己方介面不一致,不希望修改 原來的類,還想使用第三方介面

參考:

介面卡模式(類介面卡 物件介面卡)

做個筆記 引用 public inte ce usb public inte ce psp public class usber implements usb 類介面卡 psp適用usb介面 public class usbadapter extends usber implements psp 物...

介面卡模式 預設介面卡,類介面卡,物件介面卡

模式思想 改變乙個類的對外介面 增加或減少 以滿足不同外部呼叫者的需求 角色成員 目標介面 target 客戶所期待的介面。目標可以是具體的或抽象的類,也可以是介面。需要適配的類 adaptee 需要適配的類或適配者類。介面卡 adapter 通過包裝乙個需要適配的物件,把原介面轉換成目標介面。適配...

設計模式 介面卡模式 類介面卡 物件介面卡

乙個小例子,便於理解,上 這是我們造的。現在想用這個方法。public class adaptee 類介面卡。對我們想要的方法封裝一下,target就能像之前一樣,呼叫request方法即可。public class adapter1 extends adaptee implements targe...