摘要:代理模式分類很多應(yīng)用場(chǎng)景也很多本文主要講述在開發(fā)中最常用的虛擬代理和緩存代理。虛擬代理虛擬代理實(shí)現(xiàn)圖片預(yù)加載將職責(zé)拆分符合面向?qū)ο蟮膯我宦氊?zé)原則。
代理模式的定義:為其他對(duì)象提供一種代理以控制對(duì)這個(gè)對(duì)象的訪問。在某些情況下,一個(gè)對(duì)象不適合或者不能直接引用另一個(gè)對(duì)象,而代理對(duì)象可以在客戶端和目標(biāo)對(duì)象之間起到中介的作用。
代理模式分類很多,應(yīng)用場(chǎng)景也很多,本文主要講述在js開發(fā)中最常用的虛擬代理和緩存代理。
虛擬代理 虛擬代理實(shí)現(xiàn)圖片預(yù)加載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");
將職責(zé)拆分,符合面向?qū)ο蟮膯我宦氊?zé)原則。但是通常我們會(huì)將預(yù)加載和設(shè)置圖片src邏輯都放到realImg中(demo),但是這樣做違反設(shè)計(jì)模式的基本原則,以后網(wǎng)速快了,可能就不需要預(yù)加載,需要修改較多代碼,維護(hù)性不好。
虛擬代理合并http請(qǐng)求這個(gè)在web版本toList中或者文件列表勾選自動(dòng)保存可以應(yīng)用,防止手速過快頻繁請(qǐng)求,節(jié)省帶寬,前提是這些http接口具有一致性。
var synchronousFile=function (id) { console.log("開始同步文件,id為 "+id); } var proxySynchronousFile=(function () { var cache=[],//保存待合并發(fā)送請(qǐng)求的id timer; return function (id) { cache.push(id); if(timer){ return; } timer=setTimeout(function () { synchronousFile(cache.join(",")); clearTimeout(timer); timer=null; cache.length=0;//按時(shí)間段重新初始化 },2000) } })(); var chkboxs=document.getElementsByTagName("input"); for(var i=0,len=chkboxs.length;i緩存代理 緩存代理進(jìn)行計(jì)算 var mult=function () { var tmp=1; for(var i=0;i適應(yīng)一些開銷大,重復(fù)步驟較多的場(chǎng)景。一定要結(jié)合具體業(yè)務(wù)場(chǎng)景分析,進(jìn)行調(diào)優(yōu),上面其實(shí)也只是演示而已。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/81767.html
摘要:下面總結(jié)了它倆的異同相同點(diǎn)都需要實(shí)現(xiàn)同一個(gè)接口或者繼承同一個(gè)抽象類,并且代理角色和裝飾角色都持有被代理角色和構(gòu)件角色的引用。 寫完上一篇之后有小伙伴問我有沒有寫過代理模式,想看看我的理解。原本我的設(shè)計(jì)模式系列是按照創(chuàng)建型-行為型-結(jié)構(gòu)型的順序?qū)懴氯サ?,既然小伙伴誠心誠意了,我就大發(fā)慈悲的穿插一篇代理模式。開玩笑,題外話。 說起代理模式,就不由得想起經(jīng)紀(jì)人,說起經(jīng)紀(jì)人,就想起了...對(duì),...
摘要:三二模式分析代理模式的示意圖結(jié)構(gòu)比較簡(jiǎn)單一般可以簡(jiǎn)化如下圖所示。五總結(jié)在代理模式中,要求給某一個(gè)對(duì)象提供一個(gè)代理,并由代理對(duì)象控制對(duì)原對(duì)象的訪問,其英文為是一種結(jié)構(gòu)型模式。 一、寫在前面 代理模式是常用的結(jié)構(gòu)型設(shè)計(jì)模式之一、當(dāng)我們直接訪問某些對(duì)象存在問題時(shí)可以通過代理模式來間接訪問,為了保證客戶端使用的透明性、所訪問的真實(shí)對(duì)象和代理對(duì)象都必須實(shí)現(xiàn)同一個(gè)接口。 二、代理模式動(dòng)機(jī)與定義 某...
摘要:簡(jiǎn)介代理模式和裝飾者模式是兩種常見的設(shè)計(jì)模式。這里通過構(gòu)造函數(shù)的參數(shù)將被代理對(duì)象傳入到代理中,也可以通過其它方式,如提供一個(gè)方法。下面是的代碼輸出首先依然是先創(chuàng)建一個(gè)需要被代理的對(duì)象,然后把它傳入到的構(gòu)造函數(shù)中。 簡(jiǎn)介 代理模式和裝飾者模式是兩種常見的設(shè)計(jì)模式。代理模式是為其它對(duì)象提供一種代理以控制對(duì)這個(gè)對(duì)象的訪問。在某些情況下,一個(gè)對(duì)象不適合或者不能直接引用另一個(gè)對(duì)象,而代理對(duì)象可以...
摘要:代理設(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ì)象。為什么要采用這種間...
摘要:代理模式代理類中創(chuàng)建一個(gè)真實(shí)對(duì)象的實(shí)例模式的核心裝飾者強(qiáng)調(diào)的是增強(qiáng)自身,在被裝飾之后你能夠在被增強(qiáng)的類上使用增強(qiáng)后的功能。 代理模式 在詳細(xì)了解代理模式之前,可能對(duì)于像小秋一樣的小白,只知道一些很淺顯的概念,或者就知道遠(yuǎn)程代理啊,靜態(tài)代理啊,動(dòng)態(tài)代理啊,這些看似可以望文生義的專業(yè)名詞,但是如果我告訴你代理模式貫穿了我們生活的方方面面,就比如你現(xiàn)在刷著公眾號(hào)的時(shí)候,實(shí)際上就用了遠(yuǎn)程代理模...
閱讀 3089·2023-04-25 21:23
閱讀 3177·2021-09-22 15:24
閱讀 925·2019-08-30 12:55
閱讀 2177·2019-08-29 18:42
閱讀 2676·2019-08-29 16:27
閱讀 1024·2019-08-26 17:40
閱讀 2326·2019-08-26 13:29
閱讀 2683·2019-08-26 11:45