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 相关文章推荐
javascript AutoScroller 函数类
May 29 Javascript
jquery 选取方法都有哪些
May 18 Javascript
js获取时间并实现字符串和时间戳之间的转换
Jan 05 Javascript
JavaScript获取当前运行脚本文件所在目录的方法
Feb 03 Javascript
jQuery插件开发汇总
May 15 Javascript
用js读写cookie的简单方法(推荐)
Aug 08 Javascript
原生js实现回复评论功能
Jan 18 Javascript
vue模板语法-插值详解
Mar 06 Javascript
vue实现商城上货组件简易版
Nov 27 Javascript
webpack学习教程之前端性能优化总结
Dec 05 Javascript
jQuery实现表格的增、删、改操作示例
Jan 27 jQuery
elementui的el-popover修改样式不生效的解决
Jun 30 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
PHP实现图片自动清理的方法
2015/07/08 PHP
简单谈谈php浮点数精确运算
2016/03/10 PHP
PHP基于SimpleXML生成和解析xml的方法示例
2017/07/17 PHP
PHP递归遍历文件夹去除注释并压缩php源代码的方法示例
2018/05/23 PHP
laravel实现图片上传预览,及编辑时可更换图片,并实时变化的例子
2019/11/14 PHP
Dom在ajax技术中的作用说明
2010/10/25 Javascript
javascript获得服务器端控件的ID的实现代码
2011/12/28 Javascript
Jquery实现由下向上展开效果的例子
2014/12/08 Javascript
浅析Javascript中“==”与“===”的区别
2014/12/23 Javascript
JavaScript获取网页表单action属性的方法
2015/04/02 Javascript
简述JavaScript提交表单的方式 (Using JavaScript Submit Form)
2016/03/18 Javascript
jQuery给指定的table动态添加删除行的操作方法
2016/10/12 Javascript
bootstrap select插件封装成Vue2.0组件
2017/04/17 Javascript
简单谈谈js的数据类型
2017/09/25 Javascript
通过javascript实现段落的收缩与展开
2019/06/26 Javascript
vue源码nextTick使用及原理解析
2019/08/13 Javascript
小程序实现图片预览裁剪插件
2019/11/22 Javascript
如何利用JavaScript编写更好的条件语句详解
2020/08/10 Javascript
[52:00]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 LGD vs Optic
2018/04/02 DOTA
[01:06:42]VP vs NewBee Supermajor 胜者组 BO3 第二场 6.5
2018/06/06 DOTA
[50:50]完美世界DOTA2联赛PWL S3 Galaxy Racer vs Phoenix 第一场 12.10
2020/12/13 DOTA
Python异常学习笔记
2015/02/03 Python
python用列表生成式写嵌套循环的方法
2018/11/08 Python
python语言线程标准库threading.local解读总结
2019/11/10 Python
如何用 Python 处理不平衡数据集
2021/01/04 Python
使用CSS实现阅读进度条
2017/02/27 HTML / CSS
HTML5的结构和语义(5):交互
2008/10/17 HTML / CSS
世界上最大的街头服饰网站:Karmaloop
2017/02/04 全球购物
退休教师欢送会主持词
2014/03/31 职场文书
亮剑精神演讲稿
2014/05/23 职场文书
售后客服个人自我评价
2014/09/14 职场文书
异地年检委托书范本
2014/09/24 职场文书
2016年中学端午节主题活动总结
2016/04/01 职场文书
小学生节约用水倡议书
2019/08/12 职场文书
python设置 matplotlib 正确显示中文的四种方式
2021/05/10 Python
ztree+ajax实现文件树下载功能
2021/05/18 Javascript