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 相关文章推荐
animate动画示例(泪奔的小孩)及stop和delay的使用
May 06 Javascript
实现51Map地图接口(示例代码)
Nov 22 Javascript
js实现单行文本向上滚动效果实例代码
Nov 28 Javascript
js模拟C#中List的简单实例
Mar 06 Javascript
JavaScript sup方法入门实例(把字符串显示为上标)
Oct 20 Javascript
JavaScript中SetInterval与setTimeout的用法详解
Nov 10 Javascript
详述JavaScript实现继承的几种方式(推荐)
Mar 22 Javascript
AngularJS Controller作用域
Jan 09 Javascript
JavaScript输入框字数实时统计更新
Jun 17 Javascript
JavaScript动态检测密码强度原理及实现方法详解
Jun 11 Javascript
vue+springboot图片上传和显示的示例代码
Feb 14 Javascript
Vue toFixed保留两位小数的3种方式
Oct 23 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
索尼SONY ICF-SW7600GR电路分析与改良
2021/03/02 无线电
杏林同学录(一)
2006/10/09 PHP
PHP定时自动生成静态HTML的实现代码
2010/06/20 PHP
simplehtmldom Doc api帮助文档
2012/03/26 PHP
PHP CURL获取返回值的方法
2014/05/04 PHP
centos7上编译安装php7以php-fpm方式连接apache
2018/11/08 PHP
jquery判断元素是否隐藏的多种方法
2014/05/06 Javascript
jQuery中element选择器用法实例
2014/12/29 Javascript
JavaScript中指定函数名称的相关方法
2015/06/04 Javascript
详解JavaScript的流程控制语句
2015/11/30 Javascript
AngularJs学习第五篇从Controller控制器谈谈$scope作用域
2016/06/08 Javascript
vue.js删除动态绑定的radio的指定项
2017/06/02 Javascript
vue中动态绑定表单元素的属性方法
2018/02/23 Javascript
微信小程序实现上传图片功能
2018/05/28 Javascript
浅谈Vue.use的使用
2018/08/29 Javascript
JavaScript中的各种宽高属性的实现
2020/05/08 Javascript
[39:32]2014 DOTA2国际邀请赛中国区预选赛 TongFu VS DT 第二场
2014/05/23 DOTA
[01:14:34]DOTA2上海特级锦标赛C组资格赛#2 LGD VS Newbee第一局
2016/02/28 DOTA
[02:21]十步杀一人,千里不留行——DOTA2全新英雄天涯墨客展示
2018/08/29 DOTA
巧用Python装饰器 免去调用父类构造函数的麻烦
2012/05/18 Python
浅谈利用numpy对矩阵进行归一化处理的方法
2018/07/11 Python
selenium+python截图不成功的解决方法
2019/01/30 Python
python实现手机销售管理系统
2019/03/19 Python
TensorFlow实现打印每一层的输出
2020/01/21 Python
使用Django搭建网站实现商品分页功能
2020/05/22 Python
keras中模型训练class_weight,sample_weight区别说明
2020/05/23 Python
Python+Opencv身份证号码区域提取及识别实现
2020/08/25 Python
eBay意大利购物网站:eBay.it
2019/09/04 全球购物
2014基层党员干部学习全国两会心得体会
2014/03/17 职场文书
《秋游》教学反思
2014/04/24 职场文书
中职三好学生事迹材料
2014/08/24 职场文书
单位实习鉴定评语
2015/01/04 职场文书
体育教师个人总结
2015/02/09 职场文书
《蚂蚁和蝈蝈》教学反思
2016/02/22 职场文书
详解MongoDB的条件查询和排序
2021/06/23 MongoDB
Golang 并发下的问题定位及解决方案
2022/03/16 Golang