一、代理模式概念
說明:顧名思義就是用一個類來代替另一個類來執(zhí)行方法功能,這個模式跟裝飾模式有點(diǎn)相似,不一樣的是,代理模式是代替客戶初始化被代理對象類,而裝飾模式采用接口或初裝飾者參數(shù)引用的方式來執(zhí)行的。
解釋:房屋中介,可以代理幫助賣家把房子賣給買家,這中間賣家說要賣的價錢就可以了,買家也可以提出自己要買的房型,中介可以幫忙處理中間環(huán)節(jié)。最后達(dá)成買賣。中介可以同時代理很多房屋買賣,并且可以代理租房事宜。
二、代理模式的作用和注意事項(xiàng)
模式作用:
1、遠(yuǎn)程代理(一個對象將不同空間的對象進(jìn)行局部代理)
2、虛擬代理(根據(jù)需要創(chuàng)建開銷很大的對象如渲染網(wǎng)頁暫時用占位代替真圖)
3、安全代理(控制證實(shí)對象的訪問權(quán)限)
4、智能指引(調(diào)用對象代理處理另外一些事情如垃圾回收機(jī)制)
注意事項(xiàng):
1、不能濫用代理,有時候僅僅是給代碼增加復(fù)雜度
三、代理模式代碼和實(shí)戰(zhàn)總結(jié)
<!DOCTYPE html><html><head lang="en"><meta charset="UTF-8"><title></title></head><body><script>//代理模式需要三方//1.買家function maijia(){this.name = "小明";this.money = "30萬";}//2.中介function zhongjie(){}zhongjie.prototype.maifang = function(){//new fongdong(new maijia()).maifang("20萬");new fongdong(new maijia()).maifang("20萬");}//3.賣家function fongdong(maijia){this.maijia_name = maijia.name;this.maijia_money = maijia.money;this.maifang = function(money){// alert("收到了來自【"+this.maijia_name+"】"+money+"人民幣");alert("收到了來自【"+this.maijia_name+"】"+this.maijia_money+"人民幣");}}(new zhongjie()).maifang();</script><script>// A2Bfunction A(){this.money = "20RMB";}function to(){if(!(this instanceof to)){return new to;}}to.prototype.maifang = function(){var a = new A();new B().maifang(a.money);}function B(){this.maifang = function(money){alert("收到了錢"+money);}}(new to()).maifang();to().maifang();</script></body></html>新聞熱點(diǎn)
疑難解答