JavaScript的设计模式经典之代理模式


Posted in Javascript onFebruary 24, 2016

 一、代理模式概念

说明:顾名思义就是用一个类来代替另一个类来执行方法功能,这个模式跟装饰模式有点相似,不一样的是,代理模式是代替客户初始化被代理对象类,而装饰模式采用接口或初装饰者参数引用的方式来执行的。

解释:房屋中介,可以代理帮助卖家把房子卖给买家,这中间卖家说要卖的价钱就可以了,买家也可以提出自己要买的房型,中介可以帮忙处理中间环节。最后达成买卖。中介可以同时代理很多房屋买卖,并且可以代理租房事宜。

二、代理模式的作用和注意事项

模式作用:

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>
Javascript 相关文章推荐
jQuery ready函数滥用分析
Feb 16 Javascript
JavaScript设计模式之工厂模式和构造器模式
Feb 11 Javascript
jQuery实现进度条效果代码
Dec 17 Javascript
设计模式中的facade外观模式在JavaScript开发中的运用
May 18 Javascript
用jmSlip编写移动端顶部日历选择控件
Oct 24 Javascript
jQuery使用unlock.js插件实现滑动解锁
Apr 04 jQuery
微信小程序对接七牛云存储的方法
Jul 30 Javascript
antd组件Upload实现自己上传的实现示例
Dec 18 Javascript
Vue封装的组件全局注册并引用
Jul 24 Javascript
vue 中 命名视图的用法实例详解
Aug 14 Javascript
原生js+css调节音量滑块
Jan 15 Javascript
ES6如何用一句代码实现函数的柯里化
Jan 18 Javascript
jQuery实现验证年龄简单思路
Feb 24 #Javascript
JavaScript实现99乘法表及隔行变色实例代码
Feb 24 #Javascript
JavaScript中Object.prototype.toString方法的原理
Feb 24 #Javascript
JavaScript判断变量是否为数组的方法(Array)
Feb 24 #Javascript
浅析jQuery Ajax请求参数和返回数据的处理
Feb 24 #Javascript
jQuery+formdata实现上传进度特效遇到的问题
Feb 24 #Javascript
JQuery EasyUI的使用
Feb 24 #Javascript
You might like
JAVA/JSP学习系列之七
2006/10/09 PHP
新版mysql+apache+php Linux安装指南
2006/10/09 PHP
Windows PHP5和Apache的安装与配置
2009/06/08 PHP
作为PHP程序员应该了解MongoDB的五件事
2013/06/03 PHP
php fsockopen伪造post与get方法的详解
2013/06/14 PHP
ubuntu下编译安装xcache for php5.3 的具体操作步骤
2013/06/18 PHP
js获取php变量的实现代码
2013/08/10 Javascript
ExtJS[Desktop]实现图标换行示例代码
2013/11/17 Javascript
JS按字节截取字符长度实例
2013/11/20 Javascript
jquery修改属性值实例代码(设置属性值)
2014/01/06 Javascript
js 调用百度地图api并在地图上进行打点添加标注
2014/05/13 Javascript
多个checkbox被选中时如何判断是否有自己想要的
2014/09/22 Javascript
jQuery检测某个元素是否存在代码分享
2015/07/09 Javascript
使用bootstrap实现多窗口和拖动效果
2016/09/22 Javascript
简单实现JS倒计时效果
2016/12/23 Javascript
jQuery Masonry瀑布流插件使用方法详解
2017/01/18 Javascript
JS中定位 position 的使用实例代码
2017/08/06 Javascript
jQuery实现简单的计时器功能实例分析
2017/08/29 jQuery
Node.js Windows Binary二进制文件安装方法
2019/05/16 Javascript
全面分析JavaScript 继承
2019/05/30 Javascript
《javascript设计模式》学习笔记七:Javascript面向对象程序设计组合模式详解
2020/04/08 Javascript
Javascript文本框脚本实现方法解析
2020/10/30 Javascript
在Python中实现替换字符串中的子串的示例
2018/10/31 Python
Python 通过截图匹配原图中的位置(opencv)实例
2019/08/27 Python
深入了解Python在HDA中的应用
2019/09/05 Python
tensorflow对图像进行拼接的例子
2020/02/05 Python
HTML5 在canvas中绘制文本附效果图
2014/06/23 HTML / CSS
英国最大的女士服装零售商:Bonmarché
2017/08/17 全球购物
3D空间设计学生找工作的自我评价
2013/10/28 职场文书
个人自我鉴定写法
2013/11/30 职场文书
大学生个人自我鉴定
2013/12/03 职场文书
大学生创业计划书的格式要求
2013/12/29 职场文书
2015年班组长工作总结
2015/04/10 职场文书
第一军规观后感
2015/06/12 职场文书
利用前端HTML+CSS+JS开发简单的TODOLIST功能(记事本)
2021/04/13 Javascript
python自动化测试通过日志3分钟定位bug
2021/11/20 Python