




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第八章適配器模式
(Adapter
pattern)8.1適配器模式簡介將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另一個(gè)接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些類可以一起工作。——《設(shè)計(jì)模式》GoF適配,即在不改變原有實(shí)現(xiàn)的基礎(chǔ)上,將原先不兼容的接口轉(zhuǎn)換為兼容的接口。8.1適配器模式簡介適配器模式很像變壓器(Adapter),變壓器把一種電壓變換成另一種電壓。美國的生活用電電壓是110V,而中國的電壓是220V。如果要在中國使用美國電器,就必須有一個(gè)能把220V電壓轉(zhuǎn)換成110V電壓的變壓器。這個(gè)變壓器就是一個(gè)Adapter。Adapter模式也很像貨物的包裝過程:被包裝的貨物的真實(shí)樣子被包裝所掩蓋和改變,因此有人把這種模式叫做包裝(Wrapper)模式。事實(shí)上,大家經(jīng)常寫很多這樣的Wrapper類,把已有的一些類包裝起來,使之具有能滿足需要的接口。適配器模式有類適配器模式和對象適配器模式兩種。變化的是應(yīng)用環(huán)境……8.2對象適配器對象適配器的結(jié)構(gòu)
客戶端需要調(diào)用Request方法,而Adaptee沒有該方法,為了使客戶端能夠使用Adaptee類,需要提供一個(gè)包裝(Wrapper)類Adapter。這個(gè)包裝類包裝了一個(gè)Adaptee的實(shí)例(對象),從而將客戶端與Adaptee銜接起來。由于Adapter與Adaptee是委派關(guān)系(組合),這決定了這個(gè)適配器模式是對象模式。8.2對象適配器對象適配器的角色目標(biāo)(Target)角色:這是客戶所期待的接口。目標(biāo)可以是具體的或抽象的類,也可以是接口。源(Adaptee)角色:需要適配的類。適配器(Adapter)角色:通過在內(nèi)部包裝(Wrap)一個(gè)Adaptee對象,把源接口轉(zhuǎn)換成目標(biāo)接口。對象適配器在類似C#這樣的不支持多繼承的語言中應(yīng)用較多。對象適配器示例利用ArrayList實(shí)現(xiàn)棧結(jié)構(gòu)--ObjectAdapterStack推薦使用8.3類適配器二、類適配器的結(jié)構(gòu)Adaptee類沒有Request方法,而客戶期待這個(gè)方法。為了使客戶能夠使用Adaptee類,提供一個(gè)中間環(huán)節(jié),即Adapter類,Adapter類實(shí)現(xiàn)了Target接口,并繼承自Adaptee,Adapter類的Request方法重新封裝了Adaptee的SpecificRequest方法,實(shí)現(xiàn)了適配的目的。因?yàn)锳dapter與Adaptee是繼承的關(guān)系,所以這決定了這個(gè)適配器模式是類模式。8.3類適配器類適配器的角色目標(biāo)(Target)角色:這是客戶所期待的接口。因?yàn)镃#不支持多繼承,所以Target必須是接口,不可以是類。源(Adaptee)角色:需要適配的類。適配器(Adapter)角色:把源接口轉(zhuǎn)換成目標(biāo)接口。這一角色必須是類。
客戶端程序應(yīng)該使用Target訪問適配器(避免胖接口)!!!示例:
ClassAdapterStack類適配器主要應(yīng)用于類似于C++的支持多繼承的語言。總的來說:對象適配器采用組合方式實(shí)現(xiàn),而類適配器采用繼承方式實(shí)現(xiàn),按照優(yōu)先使用組合的松耦合原則,應(yīng)該優(yōu)先考慮使用對象適配器。8.4適配器模式總結(jié)在什么情況下使用適配器模式Adapter模式主要應(yīng)用于“希望復(fù)用一些現(xiàn)存的類,但是接口又與復(fù)用環(huán)境要求不一致的情況”,在遺留代碼復(fù)用、類庫遷移等方面非常有用。GoF23定義了兩種Adapter模式的實(shí)現(xiàn)結(jié)構(gòu):對象適配器和類適配器。但類適配器采用“多繼承”的實(shí)現(xiàn)方式,帶來了不良的高耦合,所以一般不推薦使用。對象適配器采用“對象組合”的方式,更符合松耦合精神。Adapter模式可以實(shí)現(xiàn)的非常靈活,不
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年西寧從業(yè)資格證貨運(yùn)考試試題
- 建筑設(shè)計(jì)咨詢合同
- 2025年拉薩道路運(yùn)輸從業(yè)資格證考試內(nèi)容是什么
- 2025年陽泉年貨運(yùn)從業(yè)資格證考試答案
- 變壓器安裝承包合同
- 中小學(xué)老師聘用合同
- 安裝工程分包合同范本與安裝工程合作合同6篇
- 2025年雙鴨山貨運(yùn)從業(yè)資格證考試模擬考試題庫
- PVA膜產(chǎn)業(yè)分析報(bào)告
- 養(yǎng)殖用地變更合同范本
- 借哪吒精神燃開學(xué)斗志 開學(xué)主題班會(huì)課件
- 2025年初中主題班會(huì)課件:好習(xí)慣成就好人生
- 學(xué)校教職工代表大會(huì)全套會(huì)議會(huì)務(wù)資料匯編
- 中華人民共和國監(jiān)察法宣貫培訓(xùn)
- GB/T 45107-2024表土剝離及其再利用技術(shù)要求
- 幼兒園安全教育課件:《危險(xiǎn)的小圓珠》
- 冠心病病人的護(hù)理ppt(完整版)課件
- 砂石生產(chǎn)各工種安全操作規(guī)程
- (精心整理)林海雪原閱讀題及答案
- 云南藝術(shù)學(xué)院
- 2020華夏醫(yī)學(xué)科技獎(jiǎng)知情同意報(bào)獎(jiǎng)證明
評(píng)論
0/150
提交評(píng)論