这篇文章主要介绍了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>
运行效果如下:
以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注!
相关推荐:
关于js正则表达式的regexp对象和括号的使用
jquery阻止事件冒泡实例分析
以上就是javascript设计模式中代理模式的介绍的详细内容。