摘要:代理模式的定義為其他對(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
摘要:代理設(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ì)象。為什么要采用這種間...
摘要:保護(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)行過濾。...
摘要:什么是代理模式代理模式,類似于明星的經(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ì)象,可...
摘要:代理模式原文地址更多設(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(_純粹喜歡_)...
摘要:代理模式原文地址更多設(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(_純粹喜歡_)...
閱讀 1825·2021-11-24 10:21
閱讀 1236·2021-09-22 15:25
閱讀 3191·2019-08-30 15:55
閱讀 739·2019-08-30 15:54
閱讀 3496·2019-08-30 14:20
閱讀 1684·2019-08-30 14:06
閱讀 660·2019-08-30 13:11
閱讀 3177·2019-08-29 16:43