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同步Import,同步调用外部js的方法
Jul 08 Javascript
flash遮住div问题的正确解决方法
Feb 27 Javascript
JavaScript判断浏览器类型的方法
Feb 10 Javascript
盘点javascript 正则表达式中 中括号的【坑】
Mar 16 Javascript
ES6中Proxy代理用法实例浅析
Apr 06 Javascript
JS实现新建文件夹功能
Jun 17 Javascript
Bootstrap 模态对话框只加载一次 remote 数据的完美解决办法
Jul 09 Javascript
JavaScript数据结构之优先队列与循环队列实例详解
Oct 27 Javascript
bootstrap轮播模板使用方法详解
Nov 17 Javascript
vue.js计算属性computed用法实例分析
Jul 06 Javascript
JavaScript中ES6规范中let和const的用法和区别
Aug 06 Javascript
uniapp开发小程序的经验总结
Apr 08 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开发模式(简写版)
2007/03/15 PHP
PHP读取网页文件内容的实现代码(fopen,curl等)
2011/06/23 PHP
php 邮件发送问题解决
2014/03/22 PHP
codeigniter实现get分页的方法
2015/07/10 PHP
WordPress中获取指定分类及其子分类下的文章数目
2015/12/31 PHP
Laravel5.1 框架路由基础详解
2020/01/04 PHP
PHP哈希表实现算法原理解析
2020/12/11 PHP
让FireFox支持innerText的实现代码
2009/12/01 Javascript
Jquery replace 字符替换实现代码
2010/12/02 Javascript
关于JavaScript中name的意义冲突示例介绍
2014/05/29 Javascript
JQuery插件Quicksand实现超炫的动画洗牌效果
2015/05/03 Javascript
AngularJS 实现按需异步加载实例代码
2015/10/18 Javascript
javascript获取wx.config内部字段解决微信分享
2016/03/09 Javascript
Bootstrap carousel轮转图的使用实例详解
2016/05/17 Javascript
郁闷!ionic中获取ng-model绑定的值为undefined如何解决
2016/08/27 Javascript
jQueryUI Datepicker组件设置日期高亮
2016/10/13 Javascript
layui点击按钮添加可编辑的一行方法
2018/08/15 Javascript
微信小程序用户授权、位置授权及获取微信绑定手机号
2019/07/18 Javascript
javascript写一个ajax自动拦截并下载数据代码实例
2019/09/07 Javascript
vue中实现高德定位功能
2019/12/03 Javascript
vue路由分文件拆分管理详解
2020/08/13 Javascript
Python3.6中Twisted模块安装的问题与解决
2019/04/15 Python
python自动保存百度盘资源到百度盘中的实例代码
2019/08/26 Python
python retrying模块的使用方法详解
2019/09/25 Python
python 实现按对象传值
2019/12/26 Python
python GUI库图形界面开发之PyQt5动态加载QSS样式文件
2020/02/25 Python
HTML5实现页面切换激活的PageVisibility API使用初探
2016/05/13 HTML / CSS
EM Cosmetics官网:由彩妆大神Michelle Phan创办的独立品牌
2020/04/27 全球购物
宿舍使用违章电器检讨书
2014/01/12 职场文书
商场拾金不昧表扬信
2014/01/13 职场文书
集中采购方案
2014/06/10 职场文书
2015年食堂工作总结报告
2015/04/23 职场文书
教师节获奖感言
2015/07/31 职场文书
新课程改革心得体会
2016/01/22 职场文书
Python包argparse模块常用方法
2021/06/04 Python
使用Python获取字典键对应值的方法
2022/04/26 Python