摘要:介紹代理模式是一個(gè)非常有意義的模式,當(dāng)客戶不方便直接訪問(wèn)一個(gè)對(duì)象或不滿足要求時(shí),提供一個(gè)替身對(duì)象來(lái)控制對(duì)這請(qǐng)輸入代碼個(gè)對(duì)象的訪問(wèn)。定義代理模式是為一個(gè)對(duì)象提供一個(gè)代用品或占位符,以便控制對(duì)它的訪問(wèn)意義減少一個(gè)對(duì)象承擔(dān)過(guò)多的職責(zé),減少耦合。
1. 介紹
代理模式是一個(gè)非常有意義的模式,當(dāng)客戶不方便直接訪問(wèn)一個(gè)對(duì)象或不滿足要求時(shí),提供一個(gè)替身對(duì)象來(lái)控制對(duì)這請(qǐng)輸入代碼個(gè)對(duì)象的訪問(wèn)。
2. 定義代理模式是為一個(gè)對(duì)象提供一個(gè)代用品或占位符,以便控制對(duì)它的訪問(wèn)
3. 意義減少一個(gè)對(duì)象承擔(dān)過(guò)多的職責(zé),減少耦合。
4. 代理模式介紹 1. 保護(hù)代理保護(hù)代理的作用就是過(guò)濾一些請(qǐng)求.在這個(gè)例子中很多人都送小紅花,但是小紅不是所有人的花都收,而是只收35歲以下的人的花,但每次都要去判斷顯得麻煩,就可以交給代理對(duì)象去判斷,符合條件的才把花送給小紅。
var Flower=function(){} var xiaoming={ age:23, sendFlower:function(target){ var flower= new Flower() target.receiveFlower(flower,this.age) } } var xiaohua={ age:60, sendFlower:function(target){ var flower= new Flower() target.receiveFlower(flower,this.age) } } var proxy={ receiveFlower(flower,age){ if(age<=35){ xiaohong.receiveFlower(flower) } } } var xiaohong={ receiveFlower(flower){ console.log("i receive a flower") } } xiaoming.sendFlower(proxy) xiaohua.sendFlower(proxy)2. 虛擬代理(重點(diǎn))
虛擬代理就是把一些開(kāi)銷(xiāo)很大的對(duì)象延遲到真正需要它的時(shí)候才去創(chuàng)建。在這個(gè)例子中雖然設(shè)置了src屬性,但是會(huì)推遲到圖片加載完才設(shè)置src屬性。虛擬代理還可以應(yīng)用于合并http請(qǐng)求,處理惰性加載應(yīng)用。
var myImage=(function(){ var imgNode=document.createElement("img") document.body.appendChild(imgNode) return{ setSrc:function(src){ imgNode.src=src } } })() var proxy=(function(){ var img=new Image img.onload=function(){ console.log(myImage) myImage.setSrc(this.src) } return{ setSrc:function(src){ myImage.setSrc("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1528824410335&di=babef45d6ef1591c6b373f62af81de3b&imgtype=0&src=http%3A%2F%2Fh.hiphotos.baidu.com%2Fzhidao%2Fwh%253D450%252C600%2Fsign%3Dbf193fc3f8f2b211e47b8d4affb0490e%2Fe824b899a9014c08c1277115097b02087bf4f466.jpg") img.src=src } } })() proxy.setSrc("http://img18.3lian.com/d/file/201704/13/3e6a1f173606db1d9041ecb6e492adcb.gif")3. 緩存代理
緩存代理是把一些開(kāi)銷(xiāo)打的運(yùn)算結(jié)果先儲(chǔ)存起來(lái),下次運(yùn)算如果傳遞參數(shù)與之前一致則返回之前的運(yùn)算結(jié)果,calculate函數(shù)只會(huì)調(diào)用一次。
var calculate=function(){ var count=1 for(var i=0,len=arguments.length;i5. 代理和接口一致性 在上面的例子中可以看到代理對(duì)象和實(shí)際對(duì)象都擁有相同的方法,這有利于后續(xù)如果不需要代理了,直接把實(shí)際對(duì)象換上去就可以了,不需要做過(guò)多的修改。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://hztianpu.com/yun/95391.html
摘要:代理設(shè)計(jì)模式代理模式為其他對(duì)象提供一種代理以控制對(duì)這個(gè)對(duì)象的訪問(wèn)。代理模式是常見(jiàn)的設(shè)計(jì)模式之一是指不直接調(diào)用實(shí)際的對(duì)象,而是通過(guò)代理對(duì)象,來(lái)間接的調(diào)用實(shí)際的對(duì)象。對(duì)象類(lèi)定義了代理對(duì)象所代表的目標(biāo)對(duì)象。 代理設(shè)計(jì)模式 代理模式:為其他對(duì)象提供一種代理以控制對(duì)這個(gè)對(duì)象的訪問(wèn)。代理模式是常見(jiàn)的設(shè)計(jì)模式之一,是指不直接調(diào)用實(shí)際的對(duì)象,而是通過(guò)代理對(duì)象,來(lái)間接的調(diào)用實(shí)際的對(duì)象。為什么要采用這種間...
摘要:保護(hù)代理和虛擬代理保護(hù)代理當(dāng)有許多需求要向某對(duì)象發(fā)出一些請(qǐng)求時(shí),可以設(shè)置保護(hù)代理,通過(guò)一些條件判斷對(duì)請(qǐng)求進(jìn)行過(guò)濾。虛擬代理在程序中可以能有一些代價(jià)昂貴的操作。而虛擬代理是最常用的一種代理模式。 代理模式 代理模式是為一個(gè)對(duì)象提供一個(gè)代用品或占位符,以便控制對(duì)它的訪問(wèn)。 保護(hù)代理和虛擬代理 保護(hù)代理:當(dāng)有許多需求要向某對(duì)象發(fā)出一些請(qǐng)求時(shí),可以設(shè)置保護(hù)代理,通過(guò)一些條件判斷對(duì)請(qǐng)求進(jìn)行過(guò)濾。...
摘要:什么是代理模式代理模式,類(lèi)似于明星的經(jīng)紀(jì)人,想要拜訪明星,需要先通過(guò)經(jīng)紀(jì)人的溝通。不同于裝飾器,那種動(dòng)態(tài)加載一個(gè)對(duì)象,可以說(shuō)在代理模式當(dāng)中,代理是早已既定的。又稱(chēng)單一功能原則,面向?qū)ο笪鍌€(gè)基本原則之一。 什么是代理模式 代理模式,類(lèi)似于明星的經(jīng)紀(jì)人,想要拜訪明星,需要先通過(guò)經(jīng)紀(jì)人的溝通。而在JS當(dāng)中,如果想訪問(wèn)一個(gè)類(lèi),需要通過(guò)另一個(gè)類(lèi)來(lái)間接訪問(wèn) 。不同于裝飾器,那種動(dòng)態(tài)加載一個(gè)對(duì)象,可...
摘要:代理模式的定義為其他對(duì)象提供一種代理以控制對(duì)這個(gè)對(duì)象的訪問(wèn)。代理模式在客戶端和目標(biāo)對(duì)象之間起到一個(gè)中介作用,這樣可以起到保護(hù)目標(biāo)對(duì)象的作用。代理對(duì)象也可以對(duì)目標(biāo)對(duì)象調(diào)用之前進(jìn)行其他操作。 代理模式的定義:為其他對(duì)象提供一種代理以控制對(duì)這個(gè)對(duì)象的訪問(wèn)。在某些情況下,一個(gè)對(duì)象不適合或者不能直接引用另一個(gè)對(duì)象,而代理對(duì)象可以在客戶端和目標(biāo)對(duì)象之間起到中介的作用。 原文鏈接 虛擬代理 虛擬代理...
摘要:代理模式原文地址更多設(shè)計(jì)模式系列教程更多免費(fèi)教程博主按每天一個(gè)設(shè)計(jì)模式旨在初步領(lǐng)會(huì)設(shè)計(jì)模式的精髓,目前采用靠這吃飯和純粹喜歡兩種語(yǔ)言實(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ì)模式的精髓,目前采用靠這吃飯和純粹喜歡兩種語(yǔ)言實(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(_純粹喜歡_)...
閱讀 1421·2021-09-23 11:51
閱讀 1627·2021-09-04 16:45
閱讀 743·2019-08-30 15:54
閱讀 2146·2019-08-30 15:52
閱讀 1704·2019-08-30 11:17
閱讀 3195·2019-08-29 13:59
閱讀 2174·2019-08-28 18:09
閱讀 451·2019-08-26 12:15