国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

聽飛狐聊JavaScript設(shè)計(jì)模式系列11

wanglu1209 / 2586人閱讀

摘要:橋接模式之特權(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)告主任,我考第一是作弊!”。嘿嘿~~

這一回聊的橋接模式,主要是理解,并沒有太多復(fù)雜的地方。
下面的內(nèi)容,就練一道題吧。

連續(xù)自然數(shù)分組,計(jì)算最多組的個(gè)數(shù)

將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

相關(guān)文章

  • 飛狐JavaScript設(shè)計(jì)模式系列08

    摘要:本回內(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)中的一組接...

    saucxs 評(píng)論0 收藏0
  • 飛狐JavaScript設(shè)計(jì)模式系列06

    本回內(nèi)容介紹 上一回聊到JS中模擬接口,裝飾者模式,摻元類,分析了backbone的繼承源碼,感覺還好吧! 介一回,偶們來聊一下在JS單例模式(singleton),單例模式其實(shí)運(yùn)用很廣泛,比如:jquery,AngularJS,underscore吖蝦米的都是單例模式,來吧,直接開始咯: 1. 單例模式 保證一個(gè)類只有一個(gè)實(shí)例,從全局命名空間里提供一個(gè)唯一的訪問點(diǎn)來訪問該對(duì)象。其實(shí)之前寫過的對(duì)象...

    hiYoHoo 評(píng)論0 收藏0
  • 飛狐JavaScript設(shè)計(jì)模式系列02

    摘要:本回內(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),記...

    tangr206 評(píng)論0 收藏0
  • 飛狐JavaScript設(shè)計(jì)模式系列10

    摘要:本回內(nèi)容介紹上一回,聊了代理模式,虛擬代理,圖片懶加載,介一回,也比較容易,適配器模式,用一個(gè)新的接口對(duì)現(xiàn)有類的接口進(jìn)行包裝,處理類與的不匹配。這一回,主要聊了適配器模式,圖片預(yù)加載,主要還是理解下一回,聊一聊橋接模式,順便做一做計(jì)算題。 本回內(nèi)容介紹 上一回,聊了代理模式,虛擬代理,圖片懶加載,介一回,也比較容易,適配器模式(Adapter),用一個(gè)新的接口對(duì)現(xiàn)有類的接口進(jìn)行包裝,處...

    yexiaobai 評(píng)論0 收藏0
  • 飛狐JavaScript設(shè)計(jì)模式系列14

    摘要:本回內(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)用 (...

    fox_soyoung 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<