JavaScript的設計模式經典之代理模式_javascript技巧

來源:互聯網
上載者:User

 一、代理模式概念

說明:顧名思義就是用一個類來代替另一個類來執行方法功能,這個模式跟裝飾模式有點相似,不一樣的是,代理模式是代替客戶初始化被代理對象類,而裝飾模式採用介面或初裝飾者參數引用的方式來執行的。

解釋:房屋中介,可以代理協助賣家把房子賣給買家,這中間賣家說要賣的價錢就可以了,買家也可以提出自己要買的房型,中介可以幫忙處理中間環節。最後達成買賣。中介可以同時代理很多房屋買賣,並且可以代理租房事宜。

二、代理模式的作用和注意事項

模式作用:

1、遠程代理(一個對象將不同空間的對象進行局部代理)

2、虛擬代理(根據需要建立開銷很大的對象如渲染網頁暫時用佔位代替真圖)

3、安全代理(控制證實對象的存取權限)

4、智能指引(調用對象代理處理另外一些事情如記憶體回收機制)

注意事項:

1、不能濫用代理,有時候僅僅是給代碼增加複雜度

三、代理模式代碼和實戰總結

<!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>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.