摘要:橋接模式之特權(quán)函數(shù)特權(quán)函數(shù),用一些具有特權(quán)的方法作為橋梁以便訪問私有空間,可以回憶一下之前的系列。連續(xù)自然數(shù)分組,計(jì)算最多組的個(gè)數(shù)將至這個(gè)連續(xù)自然數(shù)分成組使每組相加的值相等。個(gè)數(shù)組中數(shù)字最多的一組有個(gè)此時(shí)的和為。
本回內(nèi)容介紹
上一回,聊了適配器模式,圖片預(yù)加載,介一回,聊橋接模式(Bridge),跟之前一樣,難度比較小,橋接模式將抽象部分與它的實(shí)現(xiàn)部分分離,通過橋接模式聯(lián)系彼此,同時(shí)又使之都可以獨(dú)立地變化。也算是一種解耦。
1.橋接模式這里需要用到之前寫過的代碼,不清楚的童鞋看看前面聊過的系列08的門面模式之DOM2事件,這里會(huì)用到EventUtil,如下:
// 獲取dom,沒什么好說的 var d = document; var $ = function(id){ return d.getElementById(id); } window.onload=function(){ // 獲取button var btn = $("btn") // 之前聊門面模式的時(shí)候?qū)懙膗til,不清楚的童鞋再看看系列08 EventUtil.addHandler(btn,"click",bridge); // 這里就是橋接了 function bridge(){ // 這個(gè)this是獲取的按鈕本身 var _self = this; // 觸發(fā)函數(shù),并把按鈕傳參過去 fire(_self); } // 這里簡(jiǎn)單的寫個(gè)彈窗,沒有寫太復(fù)雜的邏輯處理 function fire(o){ alert(o.value); // 摁一下證明被觸發(fā) } }
這里的bridge就是用于連接抽象事件和fire業(yè)務(wù)邏輯部分的橋梁,這個(gè)例子沒有寫過多的代碼,簡(jiǎn)簡(jiǎn)單單比較直觀好理解。then,下一個(gè)例子。
2. 橋接模式之組織多個(gè)類這個(gè)比上一個(gè)事件模擬的例子更簡(jiǎn)單,把其類封裝起來,通過一個(gè)橋梁函數(shù)來組織。
// 類ONE,簡(jiǎn)寫O var ClassO = function(a, b, c) { this.a = a; this.b = b; this.c = c; } // 類TWO,簡(jiǎn)寫T var ClassT = function(x,y,z) { this.x = x; this.y = y; this.z = z; }; // 橋梁類,組織上面的兩個(gè)類 var Bridge = function(a,b,c,x,y,z) { this.one = new ClassO(a,b,c); this.two = new ClassT(x,y,z); }
這個(gè)例子特簡(jiǎn)單吧,可能在平時(shí)開發(fā)中經(jīng)常用到,只是不知道這種開發(fā)模式就叫做橋接模式。then,下一個(gè)例子。
3. 橋接模式之特權(quán)函數(shù)特權(quán)函數(shù),用一些具有特權(quán)的方法作為橋梁以便訪問私有空間,可以回憶一下之前的系列02。
// Open類 var Open = function(){ // 私有業(yè)務(wù)方法,用一個(gè)簡(jiǎn)單的彈框模擬 var privateM = function(){ alert("飛狐就是帥!"); } // 這里就是一個(gè)橋梁,提供私有方法privateM的訪問權(quán) this.bridge = function(){ return privateM(); } } // 這里測(cè)試一下,沒什么好說的 var o = new Open(); o.bridge(); // 飛狐就是帥!
這個(gè)也不難吧,一個(gè)私有函數(shù)訪問特權(quán),全當(dāng)是復(fù)習(xí)了。
裝個(gè)逼先。最近的電影《我的少女時(shí)代》還不錯(cuò)耶~!啥沒記住,就一句臺(tái)詞特印象:“報(bào)告主任,我考第一是作弊!”。嘿嘿~~
連續(xù)自然數(shù)分組,計(jì)算最多組的個(gè)數(shù)這一回聊的橋接模式,主要是理解,并沒有太多復(fù)雜的地方。
下面的內(nèi)容,就練一道題吧。
將1至100這100個(gè)連續(xù)自然數(shù)分成N組,使每組相加的值相等。返回N組中個(gè)數(shù)最多一組的個(gè)數(shù):
function calculate(x){ // 項(xiàng)數(shù),更靈活的話,可以當(dāng)參數(shù)傳入,當(dāng)然邏輯會(huì)更復(fù)雜點(diǎn) var n = 100; // 前n個(gè)數(shù)的和 var s = 0; // 向下取整, var group = Math.floor(n/2); // 計(jì)算總和,沒記錯(cuò)的話,公式是=(首項(xiàng)+末項(xiàng))*項(xiàng)數(shù)/2 var sum = (1 + n) * n/2; // 計(jì)算平均數(shù),防止有余數(shù),向下取整 var avg = Math.floor(sum/x); // 循環(huán)所有項(xiàng) for (var i=1;i<=n;i++) { // 累加每一項(xiàng) s += i; // 判斷當(dāng)大于平均數(shù)時(shí)停止 if (s > avg) { console.log(x+"個(gè)數(shù)組中數(shù)字最多的一組有:" + (i - 1) + " 個(gè),此時(shí)的和為:" + (s - i) + "。"); break; } } } calculate(8); // 8個(gè)數(shù)組中數(shù)字最多的一組有:35 個(gè),此時(shí)的和為:630。
這是在網(wǎng)上看到的一道題,改寫的一個(gè)計(jì)算方法,注釋寫的還算清楚吧,更靈活的話,還可以擴(kuò)展傳入項(xiàng),有興趣的童鞋可以玩玩兒,當(dāng)娛樂消遣唄。
這一回,主要聊了橋接模式,回憶了下事件監(jiān)聽,聊了用橋接模式組織多個(gè)類,聊了特權(quán)函數(shù),做了一道計(jì)算題,這回主要在于理解~~
下一回,可能會(huì)略抽象一點(diǎn),聊一聊組合模式。
客觀看完點(diǎn)個(gè)贊,推薦推薦唄,嘿嘿~~
注:此系飛狐原創(chuàng),轉(zhuǎn)載請(qǐng)注明出處
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/78289.html
摘要:本回內(nèi)容介紹上一回聊到工廠模式,略抽象。官方說法,門面模式是指提供一個(gè)統(tǒng)一的接口去訪問多個(gè)子系統(tǒng)的多個(gè)不同的接口,為子系統(tǒng)中的一組接口提供一個(gè)統(tǒng)一的高層接口。使得子系統(tǒng)更容易使用。 本回內(nèi)容介紹 上一回聊到工廠模式,略抽象。介一回,咱聊門面模式就比較容易了,門面模式也叫外觀模式(facade)。官方說法,門面模式是指提供一個(gè)統(tǒng)一的接口去訪問多個(gè)子系統(tǒng)的多個(gè)不同的接口,為子系統(tǒng)中的一組接...
本回內(nèi)容介紹 上一回聊到JS中模擬接口,裝飾者模式,摻元類,分析了backbone的繼承源碼,感覺還好吧! 介一回,偶們來聊一下在JS單例模式(singleton),單例模式其實(shí)運(yùn)用很廣泛,比如:jquery,AngularJS,underscore吖蝦米的都是單例模式,來吧,直接開始咯: 1. 單例模式 保證一個(gè)類只有一個(gè)實(shí)例,從全局命名空間里提供一個(gè)唯一的訪問點(diǎn)來訪問該對(duì)象。其實(shí)之前寫過的對(duì)象...
摘要:本回內(nèi)容介紹上一回聊到數(shù)據(jù)類型,簡(jiǎn)單的過了一遍,包括個(gè)數(shù)組新特性等,這一回來聊聊對(duì)象,結(jié)合數(shù)組來實(shí)戰(zhàn)一些例子,在做題中成長(zhǎng),記憶會(huì)更深刻,來吧,開始咯創(chuàng)建實(shí)例的方式有兩種使用操作符后跟構(gòu)造函數(shù)飛狐使用對(duì)象字面量表示法飛狐也可以飛狐這種寫法與 本回內(nèi)容介紹 上一回聊到JS數(shù)據(jù)類型,簡(jiǎn)單的過了一遍,包括9個(gè)數(shù)組新特性等,這一回來聊聊Object對(duì)象,結(jié)合數(shù)組來實(shí)戰(zhàn)一些例子,在做題中成長(zhǎng),記...
摘要:本回內(nèi)容介紹上一回,聊了代理模式,虛擬代理,圖片懶加載,介一回,也比較容易,適配器模式,用一個(gè)新的接口對(duì)現(xiàn)有類的接口進(jìn)行包裝,處理類與的不匹配。這一回,主要聊了適配器模式,圖片預(yù)加載,主要還是理解下一回,聊一聊橋接模式,順便做一做計(jì)算題。 本回內(nèi)容介紹 上一回,聊了代理模式,虛擬代理,圖片懶加載,介一回,也比較容易,適配器模式(Adapter),用一個(gè)新的接口對(duì)現(xiàn)有類的接口進(jìn)行包裝,處...
摘要:本回內(nèi)容介紹上一回,聊了聊狀態(tài)模式,并介紹了一下介一回,聊鏈?zhǔn)骄幊蹋M一下,再模擬一下封裝一個(gè)庫。這一回,主要聊了鏈?zhǔn)秸{(diào)用,模擬了,尤其是,希望大家能喜歡這次代碼分享。下一回,聊一聊的策略模式。 本回內(nèi)容介紹 上一回,聊了聊狀態(tài)模式(State),并介紹了一下vue.js;介一回,聊鏈?zhǔn)骄幊蹋M一下jQuery,再模擬一下underscore.js,封裝一個(gè)庫。 1. 鏈?zhǔn)秸{(diào)用 (...
閱讀 1198·2021-11-10 11:35
閱讀 2925·2021-09-24 10:35
閱讀 2957·2021-09-22 15:38
閱讀 2807·2019-08-30 15:43
閱讀 1338·2019-08-29 18:39
閱讀 2557·2019-08-29 15:22
閱讀 2789·2019-08-28 18:17
閱讀 611·2019-08-26 13:37