摘要:代理模式分類很多應用場景也很多本文主要講述在開發(fā)中最常用的虛擬代理和緩存代理。虛擬代理虛擬代理實現圖片預加載將職責拆分符合面向對象的單一職責原則。
代理模式的定義:為其他對象提供一種代理以控制對這個對象的訪問。在某些情況下,一個對象不適合或者不能直接引用另一個對象,而代理對象可以在客戶端和目標對象之間起到中介的作用。
代理模式分類很多,應用場景也很多,本文主要講述在js開發(fā)中最常用的虛擬代理和緩存代理。
虛擬代理 虛擬代理實現圖片預加載var realImg=(function () { var imgNode=document.createElement("img"); document.body.appendChild(imgNode); return { setSrc:function (src) { imgNode.src=src; } } })(); var proxyImage=(function () { var img=new Image; img.onload=function () { realImg.setSrc(this.src); } return { setSrc:function (src) { realImg.setSrc("loading.gif"); img.src=src; } } })(); proxyImage.setSrc("big.png");
將職責拆分,符合面向對象的單一職責原則。但是通常我們會將預加載和設置圖片src邏輯都放到realImg中(demo),但是這樣做違反設計模式的基本原則,以后網速快了,可能就不需要預加載,需要修改較多代碼,維護性不好。
虛擬代理合并http請求這個在web版本toList中或者文件列表勾選自動保存可以應用,防止手速過快頻繁請求,節(jié)省帶寬,前提是這些http接口具有一致性。
var synchronousFile=function (id) { console.log("開始同步文件,id為 "+id); } var proxySynchronousFile=(function () { var cache=[],//保存待合并發(fā)送請求的id timer; return function (id) { cache.push(id); if(timer){ return; } timer=setTimeout(function () { synchronousFile(cache.join(",")); clearTimeout(timer); timer=null; cache.length=0;//按時間段重新初始化 },2000) } })(); var chkboxs=document.getElementsByTagName("input"); for(var i=0,len=chkboxs.length;i緩存代理 緩存代理進行計算 var mult=function () { var tmp=1; for(var i=0;i適應一些開銷大,重復步驟較多的場景。一定要結合具體業(yè)務場景分析,進行調優(yōu),上面其實也只是演示而已。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://systransis.cn/yun/81767.html
摘要:下面總結了它倆的異同相同點都需要實現同一個接口或者繼承同一個抽象類,并且代理角色和裝飾角色都持有被代理角色和構件角色的引用。 寫完上一篇之后有小伙伴問我有沒有寫過代理模式,想看看我的理解。原本我的設計模式系列是按照創(chuàng)建型-行為型-結構型的順序寫下去的,既然小伙伴誠心誠意了,我就大發(fā)慈悲的穿插一篇代理模式。開玩笑,題外話。 說起代理模式,就不由得想起經紀人,說起經紀人,就想起了...對,...
摘要:簡介代理模式和裝飾者模式是兩種常見的設計模式。這里通過構造函數的參數將被代理對象傳入到代理中,也可以通過其它方式,如提供一個方法。下面是的代碼輸出首先依然是先創(chuàng)建一個需要被代理的對象,然后把它傳入到的構造函數中。 簡介 代理模式和裝飾者模式是兩種常見的設計模式。代理模式是為其它對象提供一種代理以控制對這個對象的訪問。在某些情況下,一個對象不適合或者不能直接引用另一個對象,而代理對象可以...
摘要:代理設計模式代理模式為其他對象提供一種代理以控制對這個對象的訪問。代理模式是常見的設計模式之一是指不直接調用實際的對象,而是通過代理對象,來間接的調用實際的對象。對象類定義了代理對象所代表的目標對象。 代理設計模式 代理模式:為其他對象提供一種代理以控制對這個對象的訪問。代理模式是常見的設計模式之一,是指不直接調用實際的對象,而是通過代理對象,來間接的調用實際的對象。為什么要采用這種間...
閱讀 2999·2023-04-25 21:23
閱讀 3042·2021-09-22 15:24
閱讀 870·2019-08-30 12:55
閱讀 2104·2019-08-29 18:42
閱讀 2615·2019-08-29 16:27
閱讀 955·2019-08-26 17:40
閱讀 2189·2019-08-26 13:29
閱讀 2614·2019-08-26 11:45