亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

輕松掌握J(rèn)avaScript代理模式

 更新時(shí)間:2016年08月26日 08:45:07   作者:蘇福  
這篇文章主要幫助大家輕松掌握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');

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論