介面卡模式(adapter)
一句話
什麼是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
一句話 什麼是adapter adapter 就是乙個轉換器,比如乙個電源插頭可以讓乙個兩插頭的電器使用牆壁上的三插頭電源。這次的介紹將不寫 雖然設計模式是為了 而生,但我認為這是一種看世界的方法,不僅僅是一種 的設計方式,所以這次的介面卡模式因為比較簡單和容易理解就不再寫 解釋,但介面卡的思想能用...
Adapter 介面卡模式
1.概念 介面卡模式 adapter pattern gof95 把乙個類的介面變換成客戶端所期待的另一種介面,從而使原本因介面不匹配而無法在一起工作的兩個類能夠在一起工作。2.兩種形式 a.類的介面卡模式 b.物件的介面卡模式 3.模擬問題 現在假設我們的程式已經設計了介面request介面,但是...
Adapter介面卡模式
adapter介面卡模式是一種結構型模式,主要應對 由於應用環境的變化,常常需要將 一些現存的物件 放在新的環境中應用,但是,新環境要求的介面是現存物件所不滿足的。設計模式 中說道 將乙個類的介面轉換成客戶希望的另乙個介面。adapter模式使得原本由於介面不相容而不能一起工作的類可以一起工作。在實...