javascript設(shè)計(jì)模式 – 適配器模式原理與應(yīng)用實(shí)例分析
本文實(shí)例講述了javascript設(shè)計(jì)模式 – 適配器模式原理與應(yīng)用。分享給大家供大家參考,具體如下:
介紹:適配器模式的產(chǎn)生也來(lái)自具體的問(wèn)題,拿mac來(lái)舉例,我不能直接用mac鏈接VGA,不能直接連接網(wǎng)線接口,這是就需要提供一些轉(zhuǎn)接頭,來(lái)將一些特殊的接口與我們的火線口相鏈接。
在這個(gè)過(guò)程中轉(zhuǎn)接頭就相當(dāng)于一類適配器,mac被轉(zhuǎn)接頭所擴(kuò)展,所以mac稱之為適配者。適配器的主要作用是將客戶端的請(qǐng)求轉(zhuǎn)化為對(duì)適配者接口的調(diào)用。好多場(chǎng)景下因?yàn)榻涌诘牟患嫒荩?/p>
多一個(gè)參數(shù)少一個(gè)參數(shù),參數(shù)格式不正確,調(diào)用順序等等問(wèn)題導(dǎo)致無(wú)法直接的相互調(diào)用,適配器就是這之間作為調(diào)和的方法。
定義:將一個(gè)接口轉(zhuǎn)換成客戶希望的另一個(gè)接口,使接口不兼容的那些類可以一起工作,其別名為包裝器(Wrapper)。適配器模式既可以作為類結(jié)構(gòu)型模式,也可以作為對(duì)象結(jié)構(gòu)模型。
場(chǎng)景:我們假設(shè)一個(gè)場(chǎng)景。Common組件中提供了對(duì)數(shù)組排序以及查詢的方法,需要同時(shí)傳遞數(shù)組以及查詢條件。但現(xiàn)在有一個(gè)場(chǎng)景,是我能獲取到數(shù)組的位置和我使用查找結(jié)果的位置不在一處。
所以我們腰痛過(guò)適配器對(duì)這一類場(chǎng)景進(jìn)行適配兼容。
示例:
var Common = function(){ this.QuickSort = function(arr){ console.log('QuickSort') }; this.searchBykey = function(arr,key){ console.log('sort'); } } var OperationAdapter = function(){ this.QuickSort = new Common(); this.arr = []; this.setArr = function(arr){ this.arr = arr; }; this.sort = function(){ this.QuickSort.QuickSort(this.arr); }; this.search = function(key){ this.QuickSort.searchBykey(this.arr, key); }; } var adapter = new OperationAdapter(); adapter.setArr(['1', '12', '123']) adapter.sort(); //QuickSort adapter.search('123'); //sort
適配器模式總結(jié):
優(yōu)點(diǎn):
* 將使用與適配類解耦,通過(guò)適配器來(lái)解決定制化需求,無(wú)需對(duì)原有結(jié)構(gòu)進(jìn)行修改
* 一個(gè)適配器可以把多個(gè)不同的適配者適配到同一目標(biāo)。
* 適配器的靈活性和擴(kuò)展性都非常好,添加修改也很方便,符合開(kāi)閉原則
缺點(diǎn):
* 適配器與業(yè)務(wù)耦合嚴(yán)重,導(dǎo)致適配器的修改需要兼顧所有使用場(chǎng)景
適用場(chǎng)景:
* 系統(tǒng)需要使用現(xiàn)有類,而現(xiàn)有類不符合系統(tǒng)需求
感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運(yùn)行工具:http://tools.jb51.net/code/HtmlJsRun測(cè)試上述代碼運(yùn)行效果。
更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《javascript面向?qū)ο笕腴T教程》、《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》
希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。
- JavaScript適配器模式詳解
- javascript設(shè)計(jì)模式之Adapter模式【適配器模式】實(shí)現(xiàn)方法示例
- JavaScript設(shè)計(jì)模式之適配器模式介紹
- 深入理解JavaScript系列(39):設(shè)計(jì)模式之適配器模式詳解
- 詳解JavaScript實(shí)現(xiàn)設(shè)計(jì)模式中的適配器模式的方法
- JavaScript設(shè)計(jì)模式學(xué)習(xí)之適配器模式
- JavaScript 設(shè)計(jì)模式之組合模式解析
- JavaScript組合模式學(xué)習(xí)要點(diǎn)
- 設(shè)計(jì)模式中的組合模式在JavaScript程序構(gòu)建中的使用
- javascript設(shè)計(jì)模式 – 組合模式原理與應(yīng)用實(shí)例分析
- JavaScript設(shè)計(jì)模式開(kāi)發(fā)中組合模式的使用教程
- javascript適配器模式和組合模式原理與實(shí)現(xiàn)方法詳解
相關(guān)文章
js AppendChild與insertBefore用法詳細(xì)對(duì)比
本篇文章主要是對(duì)js中AppendChild與insertBefore的用法進(jìn)行了詳細(xì)的對(duì)比。需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2013-12-12autojs 螞蟻森林能量自動(dòng)拾取即給指定好友澆水的實(shí)現(xiàn)方法
這篇文章主要介紹了autojs 螞蟻森林能量自動(dòng)拾取即給指定好友澆水的實(shí)現(xiàn)方法,本文通過(guò)圖文并茂實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05js使用正則表達(dá)式對(duì)身份證號(hào)的判斷
這篇文章主要給大家介紹了關(guān)于js使用正則表達(dá)式對(duì)身份證號(hào)的判斷的相關(guān)資料,在用戶注冊(cè)頁(yè)面有些需求要求的比較嚴(yán)格,需要對(duì)身份證驗(yàn)證是否合法,通過(guò)此功能嚴(yán)格此系統(tǒng)軟件,從而過(guò)濾到很多,需要的朋友可以參考下2023-08-08javascript實(shí)現(xiàn)修改微信分享的標(biāo)題內(nèi)容等
這篇文章主要介紹了javascript實(shí)現(xiàn)修改微信分享的標(biāo)題內(nèi)容等,需要的朋友可以參考下2014-12-12關(guān)于js中removeEventListener取消事件監(jiān)聽(tīng)的坑
許多入前端不久的人都會(huì)遇到removeEventListener無(wú)法清除監(jiān)聽(tīng)的情況,下面這篇文章主要給大家介紹了關(guān)于js中removeEventListener取消事件監(jiān)聽(tīng)的坑,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-09-09javascript實(shí)現(xiàn)給定半徑求出圓的面積
這篇文章主要介紹了javascript實(shí)現(xiàn)給定半徑求出圓的面積的相關(guān)資料,需要的朋友可以參考下2015-06-06JS對(duì)外部文件的加載及對(duì)IFRMAME的加載的實(shí)現(xiàn),當(dāng)加載完成后,指定指向方法(方法回調(diào))
callback方法回調(diào)是指當(dāng)某方法執(zhí)行完成后,去自動(dòng)執(zhí)行指定的另一方法的過(guò)程.下面舉兩個(gè)代表性的例子,說(shuō)說(shuō)JS世界里的方法回調(diào).2011-07-07