JavaScript設(shè)計(jì)模式--橋梁模式引入操作實(shí)例分析
本文實(shí)例講述了JavaScript設(shè)計(jì)模式--橋梁模式引入操作。分享給大家供大家參考,具體如下:
1.使用情況
(1)事件的監(jiān)控
#1,利用頁(yè)面的button來選擇寵物的例子(思路)
button.addEvent(element,"click",getPetByBame); function getPetByBame(e){ var id = this.id; asyncRquest("GET",'pet.action?id='+id,function(pet){ consols.log("request pet"+pet.resopnseText) }) }
#2,addEvent函數(shù)
/*obj:需要增加事件的對(duì)象 * type:事件名稱 * fn:執(zhí)行事件的函數(shù) * */ function addEvent(obj,type,fn){//addEvent:為某個(gè)文檔節(jié)點(diǎn)增加事件的方法 if(obj.addEventListener){//Mozilla中: obj.addEventListener(type,fn,false); }else if(obj.attachEvent){//IE中: obj["e"+type+fn] = fn; obj[type+fn] = function(){ obj["e"+type+fn]() } obj.attachEvent("on"+type,fn) } }
總結(jié):該種方式對(duì)于單元測(cè)試很難進(jìn)行
改進(jìn)為用簡(jiǎn)單的橋梁模式來解決
#1,后臺(tái)中的api
function getPetByBame(id,callBack){ sayncRquest("GET",'url?id='+id,function(pet){ callBack(pet) })
#2,橋梁
//定義一個(gè)橋梁叫抽象和實(shí)現(xiàn)相互聯(lián)系在一起 addEvent(element,"click",getPetByNameBridge) function getPetByNameBridge(){ getPetByBame(this.id,function(pet){ consols.log("request pet"+pet.resopnseText); }) }
總結(jié):這種做法使API和展現(xiàn)層完全分離,API和展現(xiàn)層可以靈活的變動(dòng)。
(2)特權(quán)函數(shù)
//特權(quán)函數(shù) var privilege=function () { //信息全封閉,內(nèi)部業(yè)務(wù)邏輯復(fù)雜,做成一個(gè)特權(quán)函數(shù),使調(diào)用方便 var complex=function (x,y) { //復(fù)雜的數(shù)學(xué)處理 } this.bridge=function () { //提供公共接口,返回一個(gè)單體 return { bridgeAdd:function () { //處理前 complex(1,2); //處理后 } } } }
(3)多個(gè)類的連接
//多個(gè)類的連接 var class1=function (a,b) { this.a=a; this.b=b; } var class2=function (e) { this.e=e; } //橋梁的連接 var bridgeClass=function () { this.one=new Class1(1,2); this.two=new Class1(1); } //目的:兩個(gè)類能獨(dú)立的修改,而門面的意義在于調(diào)用方便
橋梁模式:
感興趣的朋友可以使用在線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ì)有所幫助。
相關(guān)文章
JavaScript中Function函數(shù)與Object對(duì)象的關(guān)系
這篇文章主要介紹了JavaScript中Function函數(shù)與Object對(duì)象的關(guān)系的相關(guān)資料,需要的朋友可以參考下2015-12-12純 JS 實(shí)現(xiàn)放大縮小拖拽功能(完整代碼)
這篇文章主要介紹了純js實(shí)現(xiàn)放大縮小拖拽功能,文中給大家提到了在開發(fā)過程中遇到的一些問題及解決方法,需要的朋友可以參考下2019-11-11JS學(xué)習(xí)之表格的排序簡(jiǎn)單實(shí)例
下面小編就為大家?guī)硪黄狫S學(xué)習(xí)之表格的排序簡(jiǎn)單實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考,一起跟隨小編過來看看吧2016-05-05詳解javascript實(shí)現(xiàn)瀑布流列式布局
這篇文章主要介紹了javascript實(shí)現(xiàn)瀑布流的兩種布局方式,一是絕對(duì)式布局、二是列式布局,詳細(xì)介紹了這兩種布局方式的原理,本文重點(diǎn)介紹列式布局,感興趣的小伙伴們可以參考一下2016-01-01window.location不跳轉(zhuǎn)的問題解決方法
window.location的跳轉(zhuǎn)失效的情況有沒有遇到過啊,這主要是冒泡傳遞影響了,下面有個(gè)不錯(cuò)的解決方法,大家可以參考下2014-04-04JavaScript如何利用Promise控制并發(fā)請(qǐng)求個(gè)數(shù)
大家都知道js是單線程,并不存在真正的并發(fā),但是由于JavaScript的Event Loop機(jī)制,使得異步函數(shù)調(diào)用有了“并發(fā)”這樣的假象。這篇文章主要給大家介紹了關(guān)于JavaScript如何利用Promise控制并發(fā)請(qǐng)求個(gè)數(shù)的相關(guān)資料,需要的朋友可以參考下2021-05-05js+css3實(shí)現(xiàn)簡(jiǎn)單時(shí)鐘特效
這篇文章主要為大家詳細(xì)介紹了js+css3實(shí)現(xiàn)簡(jiǎn)單時(shí)鐘特效,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-09-09微信小程序--特定區(qū)域滾動(dòng)到頂部時(shí)固定的方法
這篇文章主要介紹了微信小程序--特定區(qū)域滾動(dòng)到頂部時(shí)固定的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04