設計模式之適配器模式_第1頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、設計模式之適配器模式模式動機 適配器模式的作用就是解決兩個軟件實體間接口不兼容狀況. 通常狀況下,用法者可以通過目標類的接口拜訪它所提供的服務。開頭時候沒有什么問題, 但是一但后續(xù)別的接口(如第三方接口)有變動或者后續(xù)擴展需求, 此時用法原有接口已經(jīng)不行以提供服務, 那么我們就需要把現(xiàn)有接口轉(zhuǎn)化為用法者需要的接口.適配器模式就是用來完成這樣的轉(zhuǎn)化. 在適配器模式中可以定義一個包裝類,包裝不兼容接口的對象,這個包裝類指的就是適配器(adapter),它所包裝的對象就是適配者(adaptee),即被適配的類。 模式定義 適配器模式(adapter pattern) :將一個接口轉(zhuǎn)換成用法者希翼的另

2、一個接口,適配器模式使接口不兼容的那些類可以一起工作,其別號為包裝器(wrapper)。適配器模式既可以作為類結(jié)構(gòu)型模式,也可以作為對象結(jié)構(gòu)型模式。 模式結(jié)構(gòu) 適配器模式包含如下角色: target:目標抽象類 adapter:適配器類 adaptee:適配者類 client:客戶類 現(xiàn)實世界舉例論證 現(xiàn)在世界中的適配器模式用法如: 港式插頭轉(zhuǎn)換器, 電源適配器, usb轉(zhuǎn)接口。 需求舉例代碼實現(xiàn) 我們需要完成一個集成多個第三方地圖sdk舉行地圖渲染功能: / 谷歌地圖,百度地圖sdk都有show辦法舉行調(diào)用。 const googlemap = show () / 詳細谷歌sdk的實現(xiàn) co

3、nsole.log(&39;開頭用法谷歌地圖渲染&39;) ; const baidumap = show () / 詳細百度sdk的實現(xiàn) console.log(&39;開頭用法百度地圖渲染&39;) / rendermap辦法是提供應用法者來調(diào)用 const rendermap = (map) => if (map.show instanceof function) map.show(); ; rendermap(googlemap); rendermap(baidumap); 這個時候產(chǎn)品需要我們集成高德地圖sdk,但是高德地圖渲染辦法不是show辦

4、法,而是render辦法. 這個時候我們不應當去改動之前的源代碼違背開閉原則. 而應當想到適配器模式. / 谷歌地圖,百度地圖sdk都有show辦法舉行調(diào)用。 const googlemap = show () / 詳細谷歌sdk的實現(xiàn) console.log(&39;開頭用法谷歌地圖渲染&39;) ; const baidumap = show () / 詳細百度sdk的實現(xiàn) console.log(&39;開頭用法百度地圖渲染&39;) const gaodemap = render () / 詳細高德sdk的實現(xiàn) console.log(&39;開

5、頭用法高德地圖渲染&39;) / 適配器 const gaodemapadapater = show () return gaodemap.render(); / rendermap辦法是提供應用法者來調(diào)用 const rendermap = (map) => if (map.show instanceof function) map.show(); ; rendermap(googlemap); rendermap(baidumap); rendermap(gaodemapadapater); 另外一個例子也是我們頻繁的場景-數(shù)據(jù)格式變更, 這個我在開發(fā)中常常碰到: / 這是我

6、們之前上傳資源, 后臺返回給我們的文件信息. const responseuploadfile = starttime: &39;&39;, file: size: &39;100kb&39;, type: &39;text&39;, url: &39;&39;, name: &39;&39;, . , id: &39;&39; / 假如某天后臺驟然說由于某些緣由后續(xù)上傳文件返回格式有變動了。如下 const changeresuploadfile = size: &39;100kb&

7、;39;, type: &39;text&39;, url: &39;&39;, name: &39;&39;, starttime: &39;&39;, id: &39;&39; / 因為我們之前用法舊格式數(shù)據(jù)做了無數(shù)業(yè)務規(guī)律,這個時候不能其改動,簡單導致bug而且需求舉行回來測試. / 采納適配器模式 const responseuploadfileadapter = (uploadfile) => / 在這里對新的數(shù)據(jù)舉行拼接轉(zhuǎn)化 模式分析 優(yōu)點: 將目標類和適配者類解耦,通過引入一個適配器類來重用現(xiàn)有的適配者類,而無須修改原有代碼。 增強了類的透亮性和復用性,將詳細的實現(xiàn)封裝在適配者類中,對于客戶端類來說是透亮的 靈便性和擴展性都十分好,通過用法配置文件,可以很便利地更換適配器,也可以在不修改原有代碼的基礎上增強新的適配器類

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論