JavaScript設(shè)計模式之代理模式簡單實例教程
本文實例講述了JavaScript設(shè)計模式之代理模式。分享給大家供大家參考,具體如下:
一、代理模式概念
代理,顧名思義就是幫助別人做事,GoF對代理模式的定義如下:
代理模式(Proxy),為其他對象提供一種代理以控制對這個對象的訪問。代理模式使得代理對象控制具體對象的引用。代理幾乎可以是任何對象:文件,資源,內(nèi)存中的對象,或者是一些難以復(fù)制的東西。
解釋:房屋中介,可以代理幫助賣家把房子賣給買家,這中間賣家說要賣的價錢就可以了,買家也可以提出自己要買的房型,中介可以幫忙處理中間環(huán)節(jié)。最后達成買賣。中介可以同時代理很多房屋買賣,并且可以代理租房事宜。
代理模式的組成:
抽象角色:通過接口或抽象類聲明真實角色實現(xiàn)的業(yè)務(wù)方法。
代理角色:實現(xiàn)抽象角色,是真實角色的代理,通過真實角色的業(yè)務(wù)邏輯方法來實現(xiàn)抽象方法,并可以附加自己的操作。
真實角色:實現(xiàn)抽象角色,定義真實角色所要實現(xiàn)的業(yè)務(wù)邏輯,供代理角色調(diào)用。
二、代理模式的作用和注意事項
模式作用:
1、遠程代理(一個對象將不同空間的對象進行局部代理)
2、虛擬代理(根據(jù)需要創(chuàng)建開銷很大的對象如渲染網(wǎng)頁暫時用占位代替真圖)
3、安全代理(控制證實對象的訪問權(quán)限)
4、智能指引(調(diào)用對象代理處理另外一些事情如垃圾回收機制)
注意事項:
1、不能濫用代理,有時候僅僅是給代碼增加復(fù)雜度
三、代理模式代碼和實戰(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){ // console.log("收到了來自【"+this.maijia_name+"】"+money+"人民幣"); console.log("收到了來自【"+this.maijia_name+"】"+this.maijia_money+"人民幣"); } } (new zhongjie()).maifang(); </script> <script> // A2B function 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){ console.log("收到了錢"+money); } } (new to()).maifang(); to().maifang(); </script> </body> </html>
使用在線HTML/CSS/JavaScript代碼運行工具 http://tools.jb51.net/code/HtmlJsRun測試運行效果如下:
更多關(guān)于JavaScript相關(guān)內(nèi)容可查看本站專題:《javascript面向?qū)ο笕腴T教程》、《JavaScript切換特效與技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》、《JavaScript錯誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學(xué)運算用法總結(jié)》
希望本文所述對大家JavaScript程序設(shè)計有所幫助。
- javascript設(shè)計模式 – 代理模式原理與用法實例分析
- js設(shè)計模式之代理模式及訂閱發(fā)布模式實例詳解
- 詳解javascript設(shè)計模式三:代理模式
- JavaScript設(shè)計模式之代理模式實例分析
- JavaScript設(shè)計模式之緩存代理模式原理與簡單用法示例
- JavaScript設(shè)計模式之代理模式詳解
- JavaScript的設(shè)計模式經(jīng)典之代理模式
- 學(xué)習(xí)JavaScript設(shè)計模式之代理模式
- 學(xué)習(xí)JavaScript設(shè)計模式(代理模式)
- 深入理解JavaScript系列(31):設(shè)計模式之代理模式詳解
- JavaScript設(shè)計模式之代理模式介紹
- JavaScript設(shè)計模式學(xué)習(xí)之代理模式
相關(guān)文章
layer彈出層的關(guān)閉問題詳解之在執(zhí)行完畢后關(guān)閉當(dāng)前彈出層
在前端頁面中用layer打開窗口供用戶輸入或選擇是非常常見的用法,但是有時為了完成一次操作,需要彈出多個窗口進行選擇、輸入或者提示,因此在關(guān)閉窗口的時候需要實現(xiàn)指定關(guān)閉任意窗口,需要的朋友可以參考下2023-10-10使用typescript推導(dǎo)已有變量的盲盒類型詳情
這篇文章主要介紹了使用typescript推導(dǎo)已有變量的盲盒類型詳情,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-08-08僅9張思維導(dǎo)圖幫你輕松學(xué)習(xí)Javascript 就這么簡單
僅9張思維導(dǎo)圖幫你輕松學(xué)習(xí)Javascript,從javascript變量、javascript運算符、javascript函數(shù)基礎(chǔ)等多方面了解Javascript,就這么簡單2016-06-06arcgis for js 修改infowindow樣式的方法
下面小編就為大家?guī)硪黄猘rcgis for js 修改infowindow樣式的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-11-11JS表格組件神器bootstrap table詳解(強化版)
這篇文章主要以實例的方式為大家再次介紹了JS表格組件神器bootstrap table,bootstrap table界面采用扁平化的風(fēng)格,用戶體驗比較好,更好兼容各種客戶端,需要了解更多bootstrap table的朋友可以參考下2016-05-05