輕松掌握J(rèn)avaScript代理模式
在面向?qū)ο笤O(shè)計(jì)中,有一個(gè)單一職責(zé)原則,指就一個(gè)類(對(duì)象、函數(shù))而言,應(yīng)該僅有一個(gè)引起它變化的原因。如果一個(gè)對(duì)象承擔(dān)了過多的職責(zé),就意味著它將變得巨大,引起它變化的原因就多,它把這些職責(zé)耦合到了一起,這種耦合會(huì)導(dǎo)致程序難于維護(hù)和重構(gòu)。
這時(shí)候,我們可以把該對(duì)象(本體)的其中一部分職責(zé)分離出來給一些第三方對(duì)象去做,本體只管自己的一些核心職責(zé),這些第三方對(duì)象就稱作代理。代理對(duì)象可以作為對(duì)象(也叫“真正的主體”)的保護(hù)者,讓真正的主體對(duì)象做盡量少的工作。在代理設(shè)計(jì)模式中,一個(gè)對(duì)象充當(dāng)了另一個(gè)對(duì)象的接口的角色。
通常代理和本體的接口應(yīng)該保持一致性,這樣當(dāng)不需要代理的時(shí)候,用戶可直接訪問本體。
當(dāng)我們不方便直接訪問一個(gè)對(duì)象時(shí),就可以考慮給該對(duì)象招一個(gè)代理。
代理可用于:圖片預(yù)加載、合并HTTP請(qǐng)求(代理收集一定時(shí)間內(nèi)的所有HTTP請(qǐng)求,然后一次性發(fā)給服務(wù)器)、惰性加載(通過代理處理和收集一些基本操作,然后僅在真正需要本體的時(shí)候才加載本體)、緩存代理(緩存請(qǐng)求結(jié)果、計(jì)算結(jié)果)等
例子1:圖片預(yù)加載
var myImage = (function(){
var imgNode = document.createElement('img');
document.body.appendChild(imgNode);
return {
setSrc:function(src){
imgNode.src = src;
}
}
})();
//代理函數(shù)
var proxyImage = (function(){
var img = new Image;
img.onload = function(){
myImage.setSrc(this.src);
}
return{
setSrc:function(src){
myImage.setSrc('loading.gif');
img.src = src;
}
}
})();
proxyImage.setSrc('show.jpg');
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- JavaScript設(shè)計(jì)模式之代理模式詳解
- JavaScript設(shè)計(jì)模式之代理模式介紹
- JavaScript的設(shè)計(jì)模式經(jīng)典之代理模式
- JavaScript設(shè)計(jì)模式之緩存代理模式原理與簡(jiǎn)單用法示例
- js設(shè)計(jì)模式之代理模式及訂閱發(fā)布模式實(shí)例詳解
- JavaScript設(shè)計(jì)模式之代理模式簡(jiǎn)單實(shí)例教程
- JavaScript命令模式原理與用法實(shí)例詳解
- JavaScript觀察者模式原理與用法實(shí)例詳解
- JavaScript享元模式原理與用法實(shí)例詳解
- JavaScript裝飾者模式原理與用法實(shí)例詳解
- JavaScript代理模式原理與用法實(shí)例詳解
相關(guān)文章
[js高手之路]寄生組合式繼承的優(yōu)勢(shì)詳解
下面小編就為大家?guī)硪黄猍js高手之路]寄生組合式繼承的優(yōu)勢(shì)詳解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-08-08
ComboBox(下拉列表框)通過url加載調(diào)用遠(yuǎn)程數(shù)據(jù)的方法
這篇文章主要介紹了ComboBox(下拉列表框)通過url加載調(diào)用遠(yuǎn)程數(shù)據(jù)的方法 ,需要的朋友可以參考下2017-08-08
javascript實(shí)現(xiàn)簡(jiǎn)單的可隨機(jī)變色網(wǎng)頁計(jì)算器示例
這篇文章主要介紹了javascript實(shí)現(xiàn)簡(jiǎn)單的可隨機(jī)變色網(wǎng)頁計(jì)算器,具有基本的四則運(yùn)算與背景色隨機(jī)變換功能,需要的朋友可以參考下2016-12-12
JavaScript利用el-table實(shí)現(xiàn)繪制熱度表
這篇文章主要為大家詳細(xì)介紹了JavaScript如何利用el-table實(shí)現(xiàn)繪制熱度表,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-03-03

