成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JS設(shè)計(jì)模式-代理模式

馬龍駒 / 2802人閱讀

摘要:代理模式的定義為其他對(duì)象提供一種代理以控制對(duì)這個(gè)對(duì)象的訪問。代理模式在客戶端和目標(biāo)對(duì)象之間起到一個(gè)中介作用,這樣可以起到保護(hù)目標(biāo)對(duì)象的作用。代理對(duì)象也可以對(duì)目標(biāo)對(duì)象調(diào)用之前進(jìn)行其他操作。

代理模式的定義:為其他對(duì)象提供一種代理以控制對(duì)這個(gè)對(duì)象的訪問。在某些情況下,一個(gè)對(duì)象不適合或者不能直接引用另一個(gè)對(duì)象,而代理對(duì)象可以在客戶端和目標(biāo)對(duì)象之間起到中介的作用。

原文鏈接

虛擬代理

虛擬代理是把一些開銷很大的對(duì)象,延遲到真正需要它的時(shí)候才去創(chuàng)建執(zhí)行

圖片懶加載
//圖片加載
let imageEle = (function(){
    let node = document.createElement("img");
    document.body.appendChild(node);
    return {
        setSrc:function(src){
            node.src = src;
        }
    }
})();

//代理對(duì)象
let proxy = (function(){
    let img = new Image();
    img.onload = function(){
        imageEle.setSrc(this.src);
    };
    return {
        setSrc:function(src){
            img.src = src;
            imageEle.setSrc("loading.gif");
        }
    }
})();

proxy.setSrc("example.png");
合并http請(qǐng)求

如果有一個(gè)功能需要頻繁進(jìn)行請(qǐng)求操作,這樣開銷比較大,可以通過一個(gè)代理函數(shù)收集一段時(shí)間內(nèi)請(qǐng)求數(shù)據(jù),一次性發(fā)出

//上傳請(qǐng)求
let upload = function(ids){
    $.ajax({
        data: {
            id:ids
        }
    })
}

//代理合并請(qǐng)求
let proxy = (function(){
    let cache = [],
        timer = null;
    return function(id){
        cache[cache.length] = id;
        if(timer) return false;
        timer = setTimeout(function(){
            upload(cache.join(","));
            clearTimeout(timer);
            timer = null;
            cache = [];
        },2000);
    }    
})();
 
// 綁定點(diǎn)擊事件
let checkbox = document.getElementsByTagName( "input" );
for(var i= 0, c; c = checkbox[i++];){
    c.onclick = function(){
        if(this.checked === true){
            proxy(this.id);
        }
    }
}
緩存代理

緩存代理可以作為一些開銷大的運(yùn)算結(jié)果提供暫時(shí)的存儲(chǔ),下次運(yùn)算時(shí),如果傳遞進(jìn)來的參數(shù)跟之前一致,則可以直接返回前面存儲(chǔ)的運(yùn)算結(jié)果

//計(jì)算乘積
let mult = function(){
    let result = 1;
    for(let i = 0,len = arguments.length;i < len;i++){
        result*= arguments[i];
    }
    return result;
}

//緩存代理
let proxy = (function(){
    let cache = {};
    reutrn function(){
        let args = Array.prototype.join.call(arguments,",");
        if(args in cache){
            return cache[args];
        }
        return cache[args] = mult.apply(this,arguments);
    }
})();
優(yōu)缺點(diǎn)

優(yōu)點(diǎn):代理模式能將代理對(duì)象與被調(diào)用對(duì)象分離,降低了系統(tǒng)的耦合度。代理模式在客戶端和目標(biāo)對(duì)象之間起到一個(gè)中介作用,這樣可以起到保護(hù)目標(biāo)對(duì)象的作用。代理對(duì)象也可以對(duì)目標(biāo)對(duì)象調(diào)用之前進(jìn)行其他操作。

缺點(diǎn):增加了系統(tǒng)的復(fù)雜度

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/88893.html

相關(guān)文章

  • js設(shè)計(jì)模式 --- 代理設(shè)計(jì)模式

    摘要:代理設(shè)計(jì)模式代理模式為其他對(duì)象提供一種代理以控制對(duì)這個(gè)對(duì)象的訪問。代理模式是常見的設(shè)計(jì)模式之一是指不直接調(diào)用實(shí)際的對(duì)象,而是通過代理對(duì)象,來間接的調(diào)用實(shí)際的對(duì)象。對(duì)象類定義了代理對(duì)象所代表的目標(biāo)對(duì)象。 代理設(shè)計(jì)模式 代理模式:為其他對(duì)象提供一種代理以控制對(duì)這個(gè)對(duì)象的訪問。代理模式是常見的設(shè)計(jì)模式之一,是指不直接調(diào)用實(shí)際的對(duì)象,而是通過代理對(duì)象,來間接的調(diào)用實(shí)際的對(duì)象。為什么要采用這種間...

    Tonny 評(píng)論0 收藏0
  • JS代理模式《JavaScript設(shè)計(jì)模式與開發(fā)實(shí)踐》閱讀筆記

    摘要:保護(hù)代理和虛擬代理保護(hù)代理當(dāng)有許多需求要向某對(duì)象發(fā)出一些請(qǐng)求時(shí),可以設(shè)置保護(hù)代理,通過一些條件判斷對(duì)請(qǐng)求進(jìn)行過濾。虛擬代理在程序中可以能有一些代價(jià)昂貴的操作。而虛擬代理是最常用的一種代理模式。 代理模式 代理模式是為一個(gè)對(duì)象提供一個(gè)代用品或占位符,以便控制對(duì)它的訪問。 保護(hù)代理和虛擬代理 保護(hù)代理:當(dāng)有許多需求要向某對(duì)象發(fā)出一些請(qǐng)求時(shí),可以設(shè)置保護(hù)代理,通過一些條件判斷對(duì)請(qǐng)求進(jìn)行過濾。...

    mist14 評(píng)論0 收藏0
  • JS設(shè)計(jì)模式代理模式

    摘要:什么是代理模式代理模式,類似于明星的經(jīng)紀(jì)人,想要拜訪明星,需要先通過經(jīng)紀(jì)人的溝通。不同于裝飾器,那種動(dòng)態(tài)加載一個(gè)對(duì)象,可以說在代理模式當(dāng)中,代理是早已既定的。又稱單一功能原則,面向?qū)ο笪鍌€(gè)基本原則之一。 什么是代理模式 代理模式,類似于明星的經(jīng)紀(jì)人,想要拜訪明星,需要先通過經(jīng)紀(jì)人的溝通。而在JS當(dāng)中,如果想訪問一個(gè)類,需要通過另一個(gè)類來間接訪問 。不同于裝飾器,那種動(dòng)態(tài)加載一個(gè)對(duì)象,可...

    widuu 評(píng)論0 收藏0
  • 每天一個(gè)設(shè)計(jì)模式·代理模式

    摘要:代理模式原文地址更多設(shè)計(jì)模式系列教程更多免費(fèi)教程博主按每天一個(gè)設(shè)計(jì)模式旨在初步領(lǐng)會(huì)設(shè)計(jì)模式的精髓,目前采用靠這吃飯和純粹喜歡兩種語言實(shí)現(xiàn)。代理模式優(yōu)缺點(diǎn)代理模式有高度解耦對(duì)象保護(hù)易修改等優(yōu)點(diǎn)。 代理模式·原文地址 更多《設(shè)計(jì)模式系列教程》 更多免費(fèi)教程 博主按:《每天一個(gè)設(shè)計(jì)模式》旨在初步領(lǐng)會(huì)設(shè)計(jì)模式的精髓,目前采用javascript(_靠這吃飯_)和python(_純粹喜歡_)...

    XiNGRZ 評(píng)論0 收藏0
  • 每天一個(gè)設(shè)計(jì)模式·代理模式

    摘要:代理模式原文地址更多設(shè)計(jì)模式系列教程更多免費(fèi)教程博主按每天一個(gè)設(shè)計(jì)模式旨在初步領(lǐng)會(huì)設(shè)計(jì)模式的精髓,目前采用靠這吃飯和純粹喜歡兩種語言實(shí)現(xiàn)。代理模式優(yōu)缺點(diǎn)代理模式有高度解耦對(duì)象保護(hù)易修改等優(yōu)點(diǎn)。 代理模式·原文地址 更多《設(shè)計(jì)模式系列教程》 更多免費(fèi)教程 博主按:《每天一個(gè)設(shè)計(jì)模式》旨在初步領(lǐng)會(huì)設(shè)計(jì)模式的精髓,目前采用javascript(_靠這吃飯_)和python(_純粹喜歡_)...

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

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

0條評(píng)論

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