代理模式是一種對程序?qū)ο筮M行控制性訪問的一類解決方案。

引入代理模式,其實是為了實現(xiàn)單一職責(zé)的面向?qū)ο笤O(shè)計原則。
單一職責(zé)其實就是指在一個類中(js中通常指對象和函數(shù)等),應(yīng)僅有一個引起它變化的原因。這樣會幫助程序設(shè)計具有良好的健壯和高內(nèi)聚特性,從而當(dāng)變化發(fā)生時,程序設(shè)計會盡量少的受到意外破壞。
代理模式有多種方法,保護代理、遠程代理、虛擬代理、緩存代理等。
但在javascript中,代理模式最常用到的兩種方法是虛擬代理和緩存代理。
虛擬代理
在理解虛擬代理時,可以將其想象為一個經(jīng)紀(jì)人,客戶程序需要通過這個虛擬代理(經(jīng)紀(jì)人)來調(diào)用本體對象的方法。
虛擬代理示例demo1: 圖片loading預(yù)加載
//通過虛擬代理實現(xiàn)圖片預(yù)加載
//代理模式進行圖片預(yù)加載的實現(xiàn)思路是: 通過代理對象獲取實際顯示圖片地址并進行加載,同時先讓本體對象顯示預(yù)加載圖片,待代理對象將實際圖片地址加載完畢后傳遞給本體對象進行顯示即可。
//本體對象
var myImage = (function(){
var imgNode = new Image()
document.body.appendChild(imgNode)
return {
setSrc: function(src){
imgNode.src = src
}
}
})()
//代理對象
var proxyImage = (function(){
var img = new Image(); //1、代理對象新建一個img對象
img.onload = function(){ //4、代理對象img加載真實圖片src完成后將src傳遞給本體對象顯示
myImage.setSrc(this.src)
}
return {
setProxySrc: function(src){
myImage.setSrc('../images/loding.gif') //2、代理對象控制本體對象使用加載圖片src
img.src = src //3、代理對象的img對象獲取將要傳遞給本體對象的真實圖片src
}
}
})()
//通過代理對象來對本體對象進行訪問
proxyImage.setProxySrc('https://p1.ssl.qhimgs1.com/t0153297036f4471d81.jpg')
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
網(wǎng)站名稱:詳解javascript設(shè)計模式三:代理模式-創(chuàng)新互聯(lián)
網(wǎng)頁URL:http://chinadenli.net/article10/shjdo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、品牌網(wǎng)站制作、網(wǎng)站策劃、域名注冊、響應(yīng)式網(wǎng)站、電子商務(wù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容