首頁  >  文章  >  web前端  >  JavaScript設計模式中代理模式的介紹

JavaScript設計模式中代理模式的介紹

不言
不言原創
2018-07-03 14:24:211488瀏覽

這篇文章主要介紹了JavaScript設計模式之代理模式,簡單描述了代理模式的概念、功能、組成並結合實例形式較為詳細的分析了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>

#運行效果如下:

##以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP中文網!

相關推薦:

關於JS正規表示式的RegExp物件和括號的使用


jQuery阻止事件冒泡實例分析


#

以上是JavaScript設計模式中代理模式的介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn