介面卡式設計模式

2021-08-31 16:59:56 字數 1382 閱讀 8704

介面卡式設計模式

介面卡模式

要點:

1. 介面卡模式主要應用於「希望復用一些現存的類,但是介面又與復用環境要求不一致的情況」,在遺留**復用、類庫遷移等方面非常有用。

2. 介面卡模式有物件介面卡和類介面卡兩種形式的實現結構,但是類介面卡採用「多繼承」的實現方式,帶來了不良的高耦合,所以一般不推薦使用。物件介面卡採用「物件組合」的方式,更符合松耦合精神。

實現:

類的介面卡模式結構圖(繼承)

物件的介面卡模式結構圖(組合)

(物件介面卡的**實現)

public

inte***ce target

adaptee:現在需要適配的已經存在的介面

public

class adaptee

}

adapter:對adaptee 的介面與target介面進行適配

public

class adapter implements target

public

void request()

private adaptee adaptee;

}

適用性:

1. 系統需要使用現有的類,而此類的介面不符合系統的需要。

2. 想要建立乙個可以重複使用的類,用於與一些彼此之間沒有太大關聯的一些類,包括一些可能在將來引進的類一起工作。這些源類不一定有很複雜的介面。

3. (對物件介面卡而言)在設計裡,需要改變多個已有子類的介面,如果使用類的介面卡模式,就要針對每乙個子類做乙個介面卡,而這不太實際。

效果及優缺點:

對於類介面卡:

1. 用乙個具體的adapter類對adaptee和taget進行匹配。結果是當我們想要匹配乙個類以及所有它的子類時,類adapter將不能勝任工作。

2. 使得adapter可以override(重定義) adaptee的部分行為,因為adapter是adaptee的乙個子類。

對於物件介面卡:

1. 允許乙個adapter與多個adaptee,即adaptee本身以及它的所有子類(如果有子類的話)同時工作。adapter也可以一次給所有的adaptee新增功能。

2. 使得override(重定義)adaptee的行為比較困難。如果一定要override adaptee的方法,就只好先做乙個adaptee的子類以override adaptee的方法,然後再把這個子類當作真正的adaptee源進行適配。

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

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

設計模式 介面卡模式(類介面卡和物件介面卡)

如果去歐洲國家去旅遊的話,他們的插座如下圖最左邊,是歐洲標準。而我們使用的插頭如下圖最右邊的。因此我們的膝上型電腦,手機在當地不能直接充電。所以就需要乙個插座轉換器,轉換器第1面插入當地的插座,第2麵供我們充電,這樣使得我們的插頭在當地能使用。生活中這樣的例子很多,手機充電器 將220v轉換為5v的...

設計模式 介面卡

一 功能 將乙個類的介面轉換成客戶希望的另外乙個介面,解決兩個已有介面之間不匹配的問題。adapter模式使得原本由於介面不相容而不能一起工作的那些類可以一起工作。二 示例 1 class adapter namespace designpattern adapter class target cl...