




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第八章適配器模式
(Adapter
pattern)8.1適配器模式簡介將一個類的接口轉換成客戶希望的另一個接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些類可以一起工作?!对O計模式》GoF適配,即在不改變原有實現(xiàn)的基礎上,將原先不兼容的接口轉換為兼容的接口。8.1適配器模式簡介適配器模式很像變壓器(Adapter),變壓器把一種電壓變換成另一種電壓。美國的生活用電電壓是110V,而中國的電壓是220V。如果要在中國使用美國電器,就必須有一個能把220V電壓轉換成110V電壓的變壓器。這個變壓器就是一個Adapter。Adapter模式也很像貨物的包裝過程:被包裝的貨物的真實樣子被包裝所掩蓋和改變,因此有人把這種模式叫做包裝(Wrapper)模式。事實上,大家經常寫很多這樣的Wrapper類,把已有的一些類包裝起來,使之具有能滿足需要的接口。適配器模式有類適配器模式和對象適配器模式兩種。變化的是應用環(huán)境……8.2對象適配器對象適配器的結構
客戶端需要調用Request方法,而Adaptee沒有該方法,為了使客戶端能夠使用Adaptee類,需要提供一個包裝(Wrapper)類Adapter。這個包裝類包裝了一個Adaptee的實例(對象),從而將客戶端與Adaptee銜接起來。由于Adapter與Adaptee是委派關系(組合),這決定了這個適配器模式是對象模式。8.2對象適配器對象適配器的角色目標(Target)角色:這是客戶所期待的接口。目標可以是具體的或抽象的類,也可以是接口。源(Adaptee)角色:需要適配的類。適配器(Adapter)角色:通過在內部包裝(Wrap)一個Adaptee對象,把源接口轉換成目標接口。對象適配器在類似C#這樣的不支持多繼承的語言中應用較多。對象適配器示例利用ArrayList實現(xiàn)棧結構--ObjectAdapterStack推薦使用8.3類適配器二、類適配器的結構Adaptee類沒有Request方法,而客戶期待這個方法。為了使客戶能夠使用Adaptee類,提供一個中間環(huán)節(jié),即Adapter類,Adapter類實現(xiàn)了Target接口,并繼承自Adaptee,Adapter類的Request方法重新封裝了Adaptee的SpecificRequest方法,實現(xiàn)了適配的目的。因為Adapter與Adaptee是繼承的關系,所以這決定了這個適配器模式是類模式。8.3類適配器類適配器的角色目標(Target)角色:這是客戶所期待的接口。因為C#不支持多繼承,所以Target必須是接口,不可以是類。源(Adaptee)角色:需要適配的類。適配器(Adapter)角色:把源接口轉換成目標接口。這一角色必須是類。
客戶端程序應該使用Target訪問適配器(避免胖接口)!!!示例:
ClassAdapterStack類適配器主要應用于類似于C++的支持多繼承的語言。總的來說:對象適配器采用組合方式實現(xiàn),而類適配器采用繼承方式實現(xiàn),按照優(yōu)先使用組合的松耦合原則,應該優(yōu)先考慮使用對象適配器。8.4適配器模式總結在什么情況下使用適配器模式Adapter模式主要應用于“希望復用一些現(xiàn)存的類,但是接口又與復用環(huán)境要求不一致的情況”,在遺留代碼復用、類庫遷移等方面非常有用。GoF23定義了兩種Adapter模式的實現(xiàn)結構:對象適配器和類適配器。但類適配器采用“多繼承”的實現(xiàn)方式,帶來了不良的高耦合,所以一般不推薦使用。對象適配器采用“對象組合”的方式,更符合松耦合精神。Adapter模式可以實現(xiàn)的非常靈活,不
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 混凝土底板施工方案
- 連續(xù)剛構施工方案
- 寧夏攔水壩施工方案
- TSICA 007-2024 數(shù)字旋變轉換器芯片的技術規(guī)范
- TSHCH 01-2024 SLAM測量技術標準
- 二零二五年度幼兒園藝術教育合作項目協(xié)議
- 2025年度茶葉加工廠租賃及茶藝培訓服務合同
- 2025年度跨境電商合伙人公司運營合作協(xié)議書
- 二零二五年度酒店客房餐飲服務滿意度調查合同
- 二零二五年度布展演出項目安全風險評估及整改合同
- 借哪吒精神燃開學斗志 開學主題班會課件
- GB/T 45107-2024表土剝離及其再利用技術要求
- 人教PEP版(2024)三年級上冊英語Unit 6《Useful numbers》單元作業(yè)設計
- 幼兒園安全教育課件:《危險的小圓珠》
- GB/T 18747.1-2002厭氧膠粘劑扭矩強度的測定(螺紋緊固件)
- 2020華夏醫(yī)學科技獎知情同意報獎證明
- 帆船帆板俱樂部創(chuàng)業(yè)計劃書
- 素描石膏幾何體
- 第二章 法國學前教育
- 精雕JDPaint常用快捷鍵
- 中興網管日常操作
評論
0/150
提交評論