您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“JavaScript設計模式之代理模式的示例分析”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“JavaScript設計模式之代理模式的示例分析”這篇文章吧。
代理,顧名思義就是幫助別人做事,GoF對代理模式的定義如下:
代理模式(Proxy),為其他對象提供一種代理以控制對這個對象的訪問。代理模式使得代理對象控制具體對象的引用。代理幾乎可以是任何對象:文件,資源,內存中的對象,或者是一些難以復制的東西。
解釋:房屋中介,可以代理幫助賣家把房子賣給買家,這中間賣家說要賣的價錢就可以了,買家也可以提出自己要買的房型,中介可以幫忙處理中間環節。最后達成買賣。中介可以同時代理很多房屋買賣,并且可以代理租房事宜。
代理模式的組成:
抽象角色:通過接口或抽象類聲明真實角色實現的業務方法。
代理角色:實現抽象角色,是真實角色的代理,通過真實角色的業務邏輯方法來實現抽象方法,并可以附加自己的操作。
真實角色:實現抽象角色,定義真實角色所要實現的業務邏輯,供代理角色調用。
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){ // 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測試運行效果如下:
以上是“JavaScript設計模式之代理模式的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。