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 1.3.2以上版本中出现pareseerror错误的解决方法
Jan 11 Javascript
jquery仿京东导航/仿淘宝商城左侧分类导航下拉菜单效果
Apr 24 Javascript
jquery学习总结(超级详细)
Sep 04 Javascript
Javascript表单验证要注意的事项
Sep 29 Javascript
使用Meteor配合Node.js编写实时聊天应用的范例
Jun 23 Javascript
AngularJS基础教程之简单介绍
Sep 27 Javascript
JavaScript编写检测用户所使用的浏览器的代码示例
May 05 Javascript
JS和jQuery使用submit方法无法提交表单的原因分析及解决办法
May 17 Javascript
简单的JS轮播图代码
Jul 18 Javascript
AngularJS实现在ng-Options加上index的解决方法
Nov 03 Javascript
vscode下vue项目中eslint的使用方法
Jan 13 Javascript
通过微信公众平台获取公众号文章的方法示例
Dec 25 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
雄兵连:天使彦天使彦为爱折翼,彦和炙心同时念动的誓言!
2020/03/02 国漫
php实现统计邮件大小的方法
2013/08/06 PHP
在WordPress中安装使用视频播放器插件Hana Flv Player
2016/01/04 PHP
laravel框架实现敏感词汇过滤功能示例
2020/02/15 PHP
JavaScript 仿关机效果的图片层
2008/12/26 Javascript
JS延迟加载(setTimeout) JS最后加载
2010/07/15 Javascript
基于jQuery的自动完成插件
2011/02/03 Javascript
用jquery和json从后台获得数据集的代码
2011/11/07 Javascript
基于jQuery.Hz2Py.js插件实现的汉字转拼音特效
2015/05/07 Javascript
js获取时间精确到秒(年月日)
2016/03/16 Javascript
设置jquery UI 控件的大小方法
2016/12/12 Javascript
ajax +NodeJS 实现图片上传实例
2017/06/06 NodeJs
vue.js实例todoList项目
2017/07/07 Javascript
详解vue+css3做交互特效的方法
2017/11/20 Javascript
NodeJs项目中关闭ESLint的方法
2018/08/09 NodeJs
jQuery实现动态生成年月日级联下拉列表示例
2019/05/11 jQuery
Vue动态修改网页标题的方法及遇到问题
2019/06/09 Javascript
Vue常用传值方式、父传子、子传父及非父子实例分析
2020/02/24 Javascript
[45:52]完美世界DOTA2联赛PWL S3 Forest vs INK ICE 第二场 12.09
2020/12/12 DOTA
C#返回当前系统所有可用驱动器符号的方法
2015/04/18 Python
python爬虫_自动获取seebug的poc实例
2017/08/05 Python
简单实现python收发邮件功能
2018/01/05 Python
使用python动态生成波形曲线的实现
2019/12/04 Python
python中图像通道分离与合并实例
2020/01/17 Python
前端canvas水印快速制作(附完整代码)
2019/09/19 HTML / CSS
ProBikeKit英国:在线公路自行车之家
2017/02/10 全球购物
澳大利亚票务和娱乐市场领导者:Ticketmaster
2017/03/03 全球购物
介绍一下XMLHttpRequest对象的常用方法和属性
2013/05/24 面试题
高中生毕业自我鉴定范文
2013/12/22 职场文书
远程研修随笔感言
2014/02/10 职场文书
读书活动总结
2014/04/28 职场文书
水电工岗位职责
2015/02/14 职场文书
培训班通知
2015/04/25 职场文书
入团介绍人意见范文
2015/06/04 职场文书
学校运动会感想
2015/08/10 职场文书
MySQL 中如何归档数据的实现方法
2022/03/16 SQL Server