adapter就是乙個目標不能直接拿來使用,需要轉換。如電源介面卡…
《設計模式》一書中對adapter模式的意圖是這樣敘述的:
將乙個類的介面轉換成客戶希望的另外乙個介面。adapter模式使原本由於介面不相容而不能一起工作的類可以一起工作。
使控制範圍之外的乙個原有物件與某個介面匹配 問題
系統的資料和行為都正確,但介面不符。通常用於必須從抽象類派生時。
解決方案
adapter模式提供了具有所需介面的包裝類。
參與者與協作者
adapter改變了adaptee的介面,是adaptee與adapter的基類target匹配。這樣client就可以使用adaptee了,好像它是target型別。效果
adapter模式使原有物件能夠適應新的類結構,不受其介面的限制。實現
1、物件adapter模式:將原有類包含在另乙個類中。讓包含類與需要的介面匹配,呼叫被包含類的方法。
2、類adapter模式:通過多重繼承實現。建立乙個新類,該類同時從兩個類繼承:從定義其介面的抽象類共有繼承;從訪問其實現的原有類私有繼承。
facade模式
adapter模式
是否存在既有的類? 是
是是否必須按某個介面設計? 否
是物件需要多型行為嗎? 否
可能需要更簡單的介面嗎? 是
否
設計模式 Adapter
adapter設計模式本身並沒有什麼特別,直觀地說就是介面封裝,在使用到第三方庫時我們常常用到,第三方庫提供的介面過於全面,引數過多,在我們實際應用中可能不會用到,通過進一步封裝,提供很好的實際介面。class target class adapter class adaptee 基本上就是三個類協...
設計模式 Adapter
類adapter include using namespace std class cadaptee virtual cadaptee public void func1 virtual ctarget public virtual void func 0 class cadapter publi...
設計模式 Adapter
意圖 使控制範圍之外的乙個原有物件與某個介面匹配。問題 系統的資料和行為都正確,但介面不符。通常用於必須從抽象類派生時。實現 將原有類包含在另一類中。讓包含類與需要的介面匹配,呼叫被包容類的方法。adapter模式有兩種型別 物件adapter模式 依賴於乙個物件 適配物件 包含另乙個物件 被適配物...