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

資訊專欄INFORMATION COLUMN

Javascript設(shè)計(jì)模式之——代理模式

cuieney / 952人閱讀

摘要:最近在讀設(shè)計(jì)模式與開發(fā)實(shí)踐,在這里把文中的各種設(shè)計(jì)模式寫出來,以便加深記憶,也可以分享給初學(xué)者。經(jīng)紀(jì)人可以全權(quán)代表明星和客戶談判,最后把談判結(jié)果給明星,明星決定簽約與否。這也違反了面向?qū)ο笤O(shè)計(jì)原則中的單一職責(zé)原則。

最近在讀《javascript設(shè)計(jì)模式與開發(fā)實(shí)踐》,在這里把文中的各種設(shè)計(jì)模式寫出來,以便加深記憶,也可以分享給初學(xué)者。如果你不了解設(shè)計(jì)模式,那么強(qiáng)烈推薦你閱讀一下這本書,相信它可以顛覆你的編程思維,助你打通任督二脈。

假設(shè)有對(duì)象A和對(duì)象B,代理模式相當(dāng)于對(duì)象C,對(duì)對(duì)象A進(jìn)行封裝,對(duì)象B只需要與對(duì)象C進(jìn)行交流。對(duì)象C就是一個(gè)替身。簡(jiǎn)而言之就是用一個(gè)對(duì)象代表另外一個(gè)對(duì)象,對(duì)應(yīng)現(xiàn)實(shí)生活中的場(chǎng)景就是明星王寶強(qiáng)和經(jīng)紀(jì)人宋喆之間的關(guān)系。經(jīng)紀(jì)人可以全權(quán)代表明星和客戶談判,最后把談判結(jié)果給明星,明星決定簽約與否。

代理模式可以用在圖片延遲加載,延遲加載的原理是:先用loading圖片替代圖片的真實(shí)src,創(chuàng)建一個(gè)img元素(代理)加載圖片的真實(shí)src。加載完之后,圖片的src替換掉loading。下面就看看代碼怎么實(shí)現(xiàn):

myImage = (function(){
    var img = document.createElement("img");
    document.body.appendChild(img);
    return {
        setSrc:function(src){
            img.src = src;
        }
    }
})()
proxyImage = (function(){
    var img = new Image;
    img.onload = function(){
        myImage .setSrc(this.src)
    }
    return {
        setSrc:function(src){
            myImage.setSrc("load.gif");
            img.src = src;
        }
    }
})()
proxyImage.setSrc("http://test.jpg"); 

代理的意義

也許你會(huì)覺得一個(gè)小小的延遲加載何必要用到設(shè)計(jì)模式?不用代理模式的確也可以做到。那么引入代理模式有什么好處呢?下面我們拋開代理模式,用常用的方式實(shí)現(xiàn)圖片延遲加載:

myImage = (function(){
    var img = document.createElement("img");
    document.body.appendChild(img);
    var imgNode = new Image;
    imgNode.onload = function(){
        img.setSrc(this.src)
    }
    return {
        setSrc:function(src){
            img.setSrc("load.gif");
            imgNode.src = src;
        }
    }
})()
myImage.setSrc("http://test.jpg"); 

上面的myImage除了負(fù)責(zé)加載圖片以外,還負(fù)責(zé)延遲加載。將來網(wǎng)速越來越快,如果有一天不需要延遲加載,那么就需要修改myImage函數(shù)。這也違反了面向?qū)ο笤O(shè)計(jì)原則中的——單一職責(zé)原則。單一職責(zé)原則要求對(duì)象只有一個(gè)職責(zé)(功能),引起對(duì)象變化的原因也只能有一個(gè),如果對(duì)象有多個(gè)職責(zé),那么這個(gè)對(duì)象會(huì)變得非常大,引起對(duì)象變化的原因有多個(gè)。單一職責(zé)也是為了程序低耦合高內(nèi)聚。

反觀代理模式,myImage只負(fù)責(zé)加載圖片,proxyImage只負(fù)責(zé)延遲加載,如果以后不需要延遲加載只需要修改調(diào)用方式即可。

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/83418.html

相關(guān)文章

  • 100行代碼讓您學(xué)會(huì)JavaScript原生的Proxy設(shè)計(jì)模式

    摘要:面向?qū)ο笤O(shè)計(jì)里的設(shè)計(jì)模式之代理模式,相信很多朋友已經(jīng)很熟悉了。代表當(dāng)前執(zhí)行方法的實(shí)例,即方法調(diào)用者。代表具體的方法名稱?,F(xiàn)在我們?cè)俅握{(diào)用,傳入構(gòu)造器返回的代理對(duì)象打印輸出,代理邏輯生效了和的一樣優(yōu)雅地實(shí)現(xiàn)了代理設(shè)計(jì)模式。 showImg(https://segmentfault.com/img/remote/1460000016760603);面向?qū)ο笤O(shè)計(jì)里的設(shè)計(jì)模式之Proxy(代理...

    txgcwm 評(píng)論0 收藏0
  • javascript設(shè)計(jì)模式學(xué)習(xí)筆記代理模式

    摘要:代理模式代理模式是為一個(gè)對(duì)象提供一個(gè)代用品或者占位符以便控制對(duì)它的訪問引入代理模式,其實(shí)是為了實(shí)現(xiàn)單一職責(zé)的面向?qū)ο笤O(shè)計(jì)原則。 代理模式 代理模式是為一個(gè)對(duì)象提供一個(gè)代用品或者占位符, 以便控制對(duì)它的訪問 引入代理模式,其實(shí)是為了實(shí)現(xiàn)單一職責(zé)的面向?qū)ο笤O(shè)計(jì)原則。 虛擬代理 將一些開銷很大的對(duì)象, 延遲到正真需要的時(shí)候執(zhí)行 // 針對(duì)大圖 增加loading圖 ...

    big_cat 評(píng)論0 收藏0
  • javascript代理模式

    支持原作者,購(gòu)買地址鏈接描述 概念 代理模式 代理模式(Proxy),為其他對(duì)象提供一種代理以控制對(duì)這個(gè)對(duì)象的訪問。 在現(xiàn)實(shí)生活中,可以找到很多代理模式使用的場(chǎng)景。明星都有經(jīng)紀(jì)人作為代理。如果請(qǐng)明星來演出,就要先同他的經(jīng)紀(jì)人溝通,談好相應(yīng)的細(xì)節(jié)與報(bào)酬。再交給明星。 需求:公司(Company)通過經(jīng)紀(jì)人(agent)找明星(start)開演唱會(huì) //演唱會(huì) var Concert = ...

    MAX_zuo 評(píng)論0 收藏0
  • 細(xì)談JavaScript中的一些設(shè)計(jì)模式

    摘要:注意事項(xiàng)聲明函數(shù)時(shí)候處理業(yè)務(wù)邏輯區(qū)分和單例的區(qū)別,配合單例實(shí)現(xiàn)初始化構(gòu)造函數(shù)大寫字母開頭推薦注意的成本。簡(jiǎn)單工廠模式使用一個(gè)類通常為單體來生成實(shí)例。 @(書籍閱讀)[JavaScript, 設(shè)計(jì)模式] 常見設(shè)計(jì)模式 一直對(duì)設(shè)計(jì)模式不太懂,花了一下午加一晚上的時(shí)間,好好的看了看各種設(shè)計(jì)模式,并總結(jié)了一下。 設(shè)計(jì)模式簡(jiǎn)介 設(shè)計(jì)模式概念解讀 設(shè)計(jì)模式的發(fā)展與在JavaScript中的應(yīng)用 ...

    30e8336b8229 評(píng)論0 收藏0
  • JavaScript設(shè)計(jì)模式結(jié)構(gòu)型設(shè)計(jì)模式

    摘要:享元模式通過分析應(yīng)用程序的對(duì)象,將其解析為內(nèi)在數(shù)據(jù)和外在數(shù)據(jù),減少對(duì)象數(shù)量,從而提高程序的性能。通過這種方式進(jìn)行事件綁定,可以減少事件處理程序的數(shù)量,這種方式叫做事件委托,也是運(yùn)用了享元模式的原理。事件處理程序是公用的內(nèi)在部分,每個(gè)菜單項(xiàng)各 github 全文地址 : YOU-SHOULD-KNOW-JS JavaScript設(shè)計(jì)模式之外觀模式 概念 外觀模式:為一組復(fù)雜子系統(tǒng)接口提...

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

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

0條評(píng)論

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