你的位置:首页 > Java教程

[Java教程]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){//      alert("收到了来自【"+this.maijia_name+"】"+money+"人民币");      alert("收到了来自【"+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){      alert("收到了钱"+money);    }  }  (new to()).maifang();  to().maifang();</script></body></html>