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的eval JSON object问题
Nov 15 Javascript
超级酷和最实用的jQuery实例收集(20个)
Apr 21 Javascript
悬浮数字的实现案例
Feb 19 Javascript
jQuery插件分享之分页插件jqPagination
Jun 06 Javascript
JavaScript中的标签语句用法分析
Feb 10 Javascript
JavaScript实现的圆形浮动标签云效果实例
Aug 06 Javascript
终于实现了!精彩的jquery弹幕效果
Jul 18 Javascript
酷! 不同风格页面布局幻灯片特效js实现
Feb 19 Javascript
原生js实现公告滚动效果
Jan 10 Javascript
详解Vue、element-ui、axios实现省市区三级联动
May 07 Javascript
vue路由传参的基本实现方式小结【三种方式】
Feb 05 Javascript
浅谈Vue static 静态资源路径 和 style问题
Nov 07 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
Session的工作方式
2006/10/09 PHP
php+mysql实现无限级分类 | 树型显示分类关系
2006/11/19 PHP
php实现求相对时间函数
2015/06/15 PHP
PHP生成随机密码方法汇总
2015/08/27 PHP
php 解决substr()截取中文字符乱码问题
2016/07/18 PHP
Yii2框架操作数据库的方法分析【以mysql为例】
2019/05/27 PHP
Thinkphp 3.2框架使用Redis的方法详解
2019/10/24 PHP
jQuery中将函数赋值给变量的调用方法
2012/03/23 Javascript
无缝滚动js代码通俗易懂(自写)
2013/06/19 Javascript
js简单的表格添加行和删除行操作示例
2014/03/31 Javascript
js实现仿阿里巴巴城市选择框效果实例
2015/06/24 Javascript
自己动手写的jquery分页控件(非常简单实用)
2015/10/28 Javascript
js 截取或者替换字符串中的数字实现方法
2016/06/13 Javascript
Bootstrap框架结合jQuery仿百度换肤功能实例解析
2016/09/17 Javascript
AngularJs ng-repeat 嵌套如何获取外层$index
2016/09/21 Javascript
原生Javascript和jQuery做轮播图简单例子
2016/10/11 Javascript
解析NodeJs的调试方法
2016/12/11 NodeJs
微信小程序的分类页面制作
2017/06/27 Javascript
详解Angular中实现自定义组件的双向绑定的两种方法
2018/11/23 Javascript
[05:22]DOTA2 2015国际邀请赛中国区预选赛首日TOP10
2015/05/26 DOTA
Python开发之Nginx+uWSGI+virtualenv多项目部署教程
2019/05/13 Python
pytorch中tensor张量数据类型的转化方式
2019/12/31 Python
python语言是免费还是收费的?
2020/06/15 Python
基于python爬取链家二手房信息代码示例
2020/10/21 Python
如何基于Python按行合并两个txt
2020/11/03 Python
世界上最大的糖果店:Dylan’s Candy Bar
2017/11/07 全球购物
物流管理毕业生自荐信
2013/10/24 职场文书
软件工程师岗位职责
2013/11/16 职场文书
十八大报告观后感
2014/01/28 职场文书
保安队长职务说明书
2014/02/23 职场文书
常务副县长“三严三实”对照检查材料思想汇报
2014/10/05 职场文书
2014幼儿教师个人工作总结
2014/12/03 职场文书
简爱电影观后感
2015/06/10 职场文书
感恩主题班会教案
2015/08/12 职场文书
2016年第104个国际护士节活动总结
2016/04/06 职场文书
el-table-column 内容不自动换行的解决方法
2022/08/14 Vue.js