Adapter 介面卡模式(設計模式03)

2021-09-23 20:06:44 字數 2632 閱讀 4648

將乙個類的介面轉換成客戶希望的另乙個介面。adapter模式使得原本由於介面不相容而不能一起工作的那些類可以一起工作。

——《設計模式》gof

物件介面卡採用物件組合,通過引用乙個類與另乙個類介面 在物件介面卡中通過組合獲得adaptee物件 通過呼叫adaptee物件的方法,轉換後返回target結果。

類介面卡通過多繼承對乙個介面與另乙個介面進行匹配。

target定義了client使用的與特定領域相關的介面,client通過呼叫target實現某乙個特定的操作。adaptee是乙個已經存在的類,需要與target協同工作,這個介面需要適配。adapter介面卡適配adaptee和target介面。在類介面卡中,通過繼承獲得adaptee中的方法。

.net不支援多重繼承,因此當target是乙個類,而不是乙個介面時無法實現類介面卡,這時需要使用物件介面卡。

在國內使用的電源供電電壓為220v,美國為380v,當你出差到美國,你的電器需要220v的電壓,但旅館裡不提供220v,只提供380,所以,你到市場買了乙個電源介面卡,在接上介面卡後,旅館裡的電源就可以使用在你的電器上了。

target:標準電源

adaptee:美國電源

adapter:介面卡

1、實現-target

///

/// 目標:target

///public

class standardpower

}

2、實現-adaptee

///

/// 要適配的物件:adaptee

///public

class americanpower

}

3、實現-adapter

///

/// 介面卡:adapter

///public

class poweradapter : standardpower

console.writeline("轉換後的電壓:", v.tostring());

return v;//轉換後,即適配後}}

4、實現-使用

standardpower power = null;

//在中國的時候

power = new standardpower();

console.writeline(power.supplypower());

//到美國以後,買乙個介面卡

power = new poweradapter();

console.writeline("適配後提supplypower源電壓為:", power.supplypower());

//讓控制台 等待

console.readline();

1.介面卡模式在.net framework中的乙個最大的應用就是com interop。

2..net中的另外乙個介面卡模式的應用就是dataadapter。

ado.net為統一的資料訪問提供了多個介面和基類,其中最重要的介面之一是idataadapter。dataadpter起到了資料庫到dataset橋接器的作用,使應用程式的資料操作統一到dataset上,而與具體的資料庫型別無關。甚至可以針對特殊的資料來源編制自己的dataadpter,從而使我們的應用程式與這些特殊的資料來源相相容。

介面卡模式重在轉換介面,它能夠使原本不能在一起工作的兩個類一起工作,所以經常用在類庫復用,**遷移等方面,有一種亡羊補牢的味道

類介面卡和物件介面卡可以根據具體實際情況來選用,但一般情況建議使用物件介面卡模式

通過類的繼承或者物件的組合轉換已有的介面為目標介面

需要使用乙個已經存在的類,但介面與設計要求不符。

希望建立乙個可以復用的類,該類可以與其他不相關的類或者是將來不可預見的類協同工作。

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

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

adapter模式可以實現的非常靈活,不必拘泥於gof23中定義的兩種結構。例如,完全可以將adapter模式中的「現存物件」作為新的介面方法引數,來達到適配的目的。

adapter模式本身要求我們盡可能地使用「面向介面的程式設計」風格,這樣才能在後期很方便地適配。

.net/jiankunking

小注:

本文部分資料整理自網路,在此表示感謝。

1、 c#設計模式(7)——介面卡模式(adapter pattern)

2、本傑.net 張波的ppt資料

OOAD 設計模式之介面卡(Adapter)模式

介面卡模式是物件的結構模式。介面卡模式把乙個類的介面變換成客戶端所期待的另一種介面,從而使原本因介面不匹配而無法在一起工作的兩個類能夠在一起工作。類的介面卡模式是通過繼承類適配者類實現,類介面卡實現客類所需的介面,當客戶物件呼叫類介面卡方法時,介面卡內部呼叫它所繼承的適配者的方法。物件的介面卡利用了...

Adapter 介面卡設計模式

定義抽象圖形類 author softstar abstract class shape public shape int x,int y public void setlocation int x,int y public int getlocation abstract void display...

設計模式 介面卡 Adapter

在軟體系統中,由於應用環境的變化,常常需要將 一些現存的物件 放在新的環境中使用,但是新環境要求的介面是這些現存物件所不滿足的。如何應對這種 遷移的變化 如何既能利用現有物件的良好實現,同時又能滿足新的應用環境所要求的介面?將乙個類的介面轉換成客戶希望的另乙個介面。adapter模式使得原本由於介面...