代理模式的定义是把对一个对象的访问, 交给另一个代理对象来操作。接下来通过本文给大家介绍 JavaScript 的设计模式之代理模式,感兴趣的朋友一起学习吧
Javascript 是一种由 Netscape 的 LiveScript 发展而来的原型化继承的基于对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如 Perl,遗留的速度问题,为客户提供更流畅的浏览效果。
一、代理模式概念
说明:顾名思义就是用一个类来代替另一个类来执行方法功能,这个模式跟装饰模式有点相似,不一样的是,代理模式是代替客户初始化被代理对象类,而装饰模式采用接口或初装饰者参数引用的方式来执行的。
解释:房屋中介,可以代理帮助卖家把房子卖给买家,这中间卖家说要卖的价钱就可以了,买家也可以提出自己要买的房型,中介可以帮忙处理中间环节。最后达成买卖。中介可以同时代理很多房屋买卖,并且可以代理租房事宜。
二、代理模式的作用和注意事项
模式作用:
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>
来源: http://www.phperz.com/article/17/0222/266992.html