一句話
什麼是adapter
?adapter
就是乙個轉換器,比如乙個電源插頭可以讓乙個兩插頭的電器使用牆壁上的三插頭電源。這次的介紹將不寫**,雖然設計模式是為了**而生,但我認為這是一種看世界的方法,不僅僅是一種**的設計方式,所以這次的介面卡模式因為比較簡單和容易理解就不再寫**解釋,但介面卡的思想能用在軟體設計、工程建築、日常生活等待方面...
意圖
將乙個類的介面轉換成客戶希望的另外乙個介面。
adapter
模式使得原本由於介面不相容而不能一起工作的那些類可以一起工作。
結構圖
圖1 類的adapter
模式結構圖
圖2 物件的adapter
模式結構圖
.net中的介面卡模式1
.adapter模式在.net framework中的乙個最大的應用就是com interop
。com interop就好像是com和.net之間的一條紐帶,一座橋梁。我們知道,com元件物件與.net類物件是完全不同的,但為了使com客戶程式象呼叫com元件一樣呼叫.net物件,使.net程式
圖7 .net程式與com互相呼叫示意圖 2
..net中的另乙個adapter模式的應用就是dataadapter。ado.net為統一的資料訪問提供了多個介面和基類,其中最重要的介面之一是idataadapter。與之相對應的dataadpter是乙個抽象類,它是ado.net與具體資料庫操作之間的資料介面卡的基類。dataadpter起到了資料庫到dataset橋接器的作用,使應用程式的資料操作統一到dataset上,而與具體的資料庫型別無關。甚至可以針對特殊的資料來源編制自己的dataadpter,從而使我們的應用程式與這些特殊的資料來源相相容。注意這是乙個介面卡的變體。
實現要點1
.adapter
模式主要應用於「希望復用一些現存的類,但是介面又與復用環境要求不一致的情況」,在遺留**復用、類庫遷移等方面非常有用。 2
.adapter
模式有物件介面卡和類介面卡兩種形式的實現結構,但是類介面卡採用「多繼承」的實現方式,帶來了不良的高耦合,所以一般不推薦使用。物件介面卡採用「物件組合」的方式,更符合松耦合精神。 3
.adapter
模式的實現可以非常的靈活,不必拘泥於
gof23
中定義的兩種結構。例如,完全可以將
adapter
模式中的「現存物件」作為新的介面方法引數,來達到適配的目的。 4
.adapter
模式本身要求我們盡可能地使用「面向介面的程式設計」風格,這樣才能在後期很方便的適配。
[以上幾點引用自
msdn webcast]
效果
對於類介面卡: 1
.用乙個具體的
adapter
類對adaptee
和taget
進行匹配。結果是當我們想要匹配乙個類以及所有它的子類時,類
adapter
將不能勝任工作。 2
.使得adapter
可以重定義
adaptee
的部分行為,因為
adapter
是adaptee
的乙個子類。 3
.僅僅引入了乙個物件,並不需要額外的指標一間接得到
adaptee.
對於物件介面卡: 1
.允許乙個
adapter
與多個adaptee
,即adaptee
本身以及它的所有子類(如果有子類的話)同時工作。
adapter
也可以一次給所有的
adaptee
新增功能。 2
.使得重定義
adaptee
的行為比較困難。這就需要生成
adaptee
的子類並且使得
adapter
引用這個子類而不是引用
adaptee
本身。
適用性
在以下各種情況下使用介面卡模式: 1
.系統需要使用現有的類,而此類的介面不符合系統的需要。 2
.想要建立乙個可以重複使用的類,用於與一些彼此之間沒有太大關聯的一些類,包括一些可能在將來引進的類一起工作。這些源類不一定有很複雜的介面。 3
.(對物件介面卡而言)在設計裡,需要改變多個已有子類的介面,如果使用類的介面卡模式,就要針對每乙個子類做乙個介面卡,而這不太實際。
總結
總之,通過運用
adapter
模式,就可以充分享受進行類庫遷移、類庫重用所帶來的樂趣。
Adapter 介面卡模式
1.概念 介面卡模式 adapter pattern gof95 把乙個類的介面變換成客戶端所期待的另一種介面,從而使原本因介面不匹配而無法在一起工作的兩個類能夠在一起工作。2.兩種形式 a.類的介面卡模式 b.物件的介面卡模式 3.模擬問題 現在假設我們的程式已經設計了介面request介面,但是...
Adapter介面卡模式
adapter介面卡模式是一種結構型模式,主要應對 由於應用環境的變化,常常需要將 一些現存的物件 放在新的環境中應用,但是,新環境要求的介面是現存物件所不滿足的。設計模式 中說道 將乙個類的介面轉換成客戶希望的另乙個介面。adapter模式使得原本由於介面不相容而不能一起工作的類可以一起工作。在實...
介面卡模式(adapter)
介面卡模式 adapter 將乙個類的介面轉換為客戶希望的另外乙個介面,adapter模式使得原本由於介面不相容而不能一起工作的那些類可以一起工作.系統的資料和行為都正確,但介面不符時,我們應該考慮使用介面卡,目的是使控制範圍之外的乙個原有物件與某個介面匹配.介面卡模式主要應用於希望復用一些現存的類...