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 相关文章推荐
用AJAX返回HTML片段中的JavaScript脚本
Jan 04 Javascript
js获取ajax返回值代码
Apr 30 Javascript
JavaScript计时器示例分析
Feb 05 Javascript
jQuery实现简单的列表式导航菜单效果代码
Aug 31 Javascript
基于javascript实现tab选项卡切换特效调试笔记
Mar 30 Javascript
jquery html动态添加的元素绑定事件详解
May 24 Javascript
简易Vue评论框架的实现(父组件的实现)
Jan 08 Javascript
快速解决brew安装特定版本flow的问题
May 17 Javascript
Vue EventBus自定义组件事件传递
Jun 25 Javascript
React Native开发封装Toast与加载Loading组件示例
Sep 08 Javascript
webpack优化之代码分割与公共代码提取详解
Nov 22 Javascript
微信小程序学习总结(四)事件与冒泡实例分析
Jun 04 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 柱状图实现代码
2009/12/04 PHP
php中var_export与var_dump的区别分析
2010/08/21 PHP
关于初学PHP时的知识积累总结
2013/06/07 PHP
PHP产生不重复随机数的5个方法总结
2014/11/12 PHP
CI框架中cookie的操作方法分析
2014/12/12 PHP
Windows 下安装 swoole 图文教程(php)
2017/06/05 PHP
php表单文件iframe异步上传实例讲解
2017/07/26 PHP
PHP校验15位和18位身份证号的类封装
2018/11/07 PHP
非阻塞动态加载javascript广告实现代码
2010/11/17 Javascript
jQuery Tools tab(幻灯片)
2012/07/14 Javascript
JavaScript实现基于Cookie的存储类实例
2015/04/10 Javascript
移动端JQ插件hammer使用详解
2015/07/03 Javascript
Angularjs通过指令监听ng-repeat渲染完成后执行脚本的方法
2016/12/31 Javascript
浅谈js-FCC算法Friendly Date Ranges(详解)
2017/04/10 Javascript
jQuery zTree树插件动态加载实例代码
2017/05/11 jQuery
axios进阶实践之利用最优雅的方式写ajax请求
2017/12/20 Javascript
在小程序Canvas中使用measureText的方法示例
2018/10/19 Javascript
JS实现随机点名器
2020/04/12 Javascript
python静态方法实例
2015/01/14 Python
详解python发送各类邮件的主要方法
2016/12/22 Python
利用Python自带PIL库扩展图片大小给图片加文字描述的方法示例
2017/08/08 Python
pybind11和numpy进行交互的方法
2019/07/04 Python
Python代码注释规范代码实例解析
2020/08/14 Python
html5简单示例_动力节点Java学院整理
2017/07/07 HTML / CSS
纬创Java面试题笔试题
2014/10/02 面试题
编写一子程序,将一链表倒序,即使链表表尾变表头,表头变表尾
2016/02/10 面试题
清洁工表扬信
2014/01/08 职场文书
市级青年文明号申报材料
2014/05/26 职场文书
2014县委书记四风对照检查材料思想汇报
2014/09/21 职场文书
活动经费申请报告
2015/05/15 职场文书
搞笑欢迎词大全
2015/09/30 职场文书
2016年中学清明节活动总结
2016/04/01 职场文书
JavaScript实现班级抽签小程序
2021/05/19 Javascript
Python 中random 库的详细使用
2021/06/03 Python
Python OpenCV超详细讲解基本功能
2022/04/02 Python
选购到合适的激光打印机
2022/04/21 数码科技