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从头学起第二讲
Jul 04 Javascript
jquery自定义滚动条插件示例分享
Feb 21 Javascript
页面加载完成后再执行JS的jquery写法以及区别说明
Feb 22 Javascript
使用Node.js给图片加水印的方法
Nov 15 Javascript
js设置文字颜色的方法示例
Dec 30 Javascript
RequireJs的使用详解
Feb 19 Javascript
深入理解vue中的$set
Jun 01 Javascript
react native仿微信PopupWindow效果的实例代码
Aug 07 Javascript
JS实现留言板功能[楼层效果展示]
Dec 27 Javascript
使用axios发送post请求,将JSON数据改为form类型的示例
Oct 31 Javascript
使用node.JS中的url模块解析URL信息
Feb 06 Javascript
小程序实现左滑删除的效果的实例代码
Oct 19 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/05/21 PHP
PHP代码优化技巧小结
2015/09/29 PHP
Yii多表联合查询操作详解
2016/06/02 PHP
详解PHP PDO简单教程
2019/05/28 PHP
PHP 实现 WebSocket 协议原理与应用详解
2020/04/22 PHP
用javascript实现在小方框中浏览大图的代码
2007/08/14 Javascript
JQuery 无废话系列教程(二) jquery实战篇上
2009/06/23 Javascript
javaScript Array(数组)相关方法简述
2009/07/25 Javascript
JS操作图片(增,删,改) 例子
2013/04/17 Javascript
用js模拟struts2的多action调用示例
2014/05/19 Javascript
AngularJS中监视Scope变量以及外部调用Scope方法
2016/01/23 Javascript
javascript显示倒计时控制按钮的简单实现
2016/06/07 Javascript
jQuery实现带延时功能的水平多级菜单效果【附demo源码下载】
2016/09/21 Javascript
详解webpack和webpack-simple中如何引入css文件
2017/06/28 Javascript
vue 实现 tomato timer(蕃茄钟)实例讲解
2017/07/24 Javascript
详解Vue打包优化之code spliting
2018/04/09 Javascript
vue路由 遍历生成复数router-link的例子
2019/10/30 Javascript
[58:32]EG vs Liquid 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
跟老齐学Python之正规地说一句话
2014/09/28 Python
python django事务transaction源码分析详解
2017/03/17 Python
python的继承知识点总结
2018/12/10 Python
python上selenium的弹框操作实现
2020/07/13 Python
python 基于opencv实现高斯平滑
2020/12/18 Python
CSS3 filter(滤镜)实现网页灰色或者黑色模式的示例代码
2021/02/24 HTML / CSS
HTML5有哪些新特征
2015/12/01 HTML / CSS
Html5中localStorage存储JSON数据并读取JSON数据的实现方法
2017/02/13 HTML / CSS
HTML5高仿微信聊天、微信聊天表情|对话框|编辑器功能
2018/04/23 HTML / CSS
.NET程序员的数据库面试题
2012/10/10 面试题
学校七一活动方案
2014/01/19 职场文书
煤矿安全协议书
2014/08/20 职场文书
2014购房个人委托书范本
2014/10/12 职场文书
2016年小学教师师德承诺书
2016/03/25 职场文书
微信小程序和php的登录实现
2021/04/01 PHP
pytorch显存一直变大的解决方案
2021/04/08 Python
台积电称即便经济低迷也没有降价的计划
2022/04/21 数码科技
MySQL聚簇索引和非聚簇索引的区别详情
2022/06/14 MySQL