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库与其他JS库冲突的解决办法
Feb 07 Javascript
兼容IE和Firefox火狐的上下、左右循环无间断滚动JS代码
Apr 19 Javascript
深入探寻javascript定时器
Jan 02 Javascript
jQuery中last()方法用法实例
Jan 06 Javascript
JavaScript函数详解
Feb 27 Javascript
JS实现文件动态顺序载入的方法
Mar 07 Javascript
JS触发服务器控件的单击事件(详解)
Aug 06 Javascript
javascript如何创建对象
Aug 29 Javascript
使用JS 插件qrcode.js生成二维码功能
Feb 20 Javascript
vue + webpack如何绕过QQ音乐接口对host的验证详解
Jul 01 Javascript
vue iview多张图片大图预览、缩放翻转
Jul 13 Javascript
ant design vue嵌套表格及表格内部编辑的用法说明
Oct 28 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
图书管理程序(三)
2006/10/09 PHP
phpize的深入理解
2013/06/03 PHP
PHP实现获取FLV文件的时间
2015/02/10 PHP
php处理json格式数据经典案例总结
2016/05/19 PHP
关于php几种字符串连接的效率比较(详解)
2017/02/22 PHP
PHP 爬取网页的主要方法
2018/07/13 PHP
laravel自定义分页的实现案例offset()和limit()
2019/10/15 PHP
JObj预览一个JS的框架
2008/03/13 Javascript
跨浏览器开发经验总结(四) 怎么写入剪贴板
2010/05/13 Javascript
JS TextArea字符串长度限制代码集合
2012/10/31 Javascript
showModalDialog模态对话框的使用详解以及浏览器兼容
2014/01/11 Javascript
JS 使用for循环遍历子节点查找元素
2014/09/06 Javascript
jQuery学习心得总结(必看篇)
2016/06/10 Javascript
JavaScript中全选、全不选、反选、无刷新删除、批量删除、即点即改入库(在yii框架中操作)的代码分享
2016/11/01 Javascript
网页爬虫之cookie自动获取及过期自动更新的实现方法
2018/03/06 Javascript
JS实现指定区域的全屏显示功能示例
2019/04/25 Javascript
vue中 数字相加为字串转化为数值的例子
2019/11/07 Javascript
python实现对csv文件的列的内容读取
2018/07/04 Python
python调用百度语音识别实现大音频文件语音识别功能
2018/08/30 Python
Python使用pyautogui模块实现自动化鼠标和键盘操作示例
2018/09/04 Python
python实现四人制扑克牌游戏
2020/04/22 Python
python如何将图片转换素描画
2020/09/08 Python
python实现磁盘日志清理的示例
2020/11/05 Python
Python Web项目Cherrypy使用方法镜像
2020/11/05 Python
python 基于opencv实现图像增强
2020/12/23 Python
法国奢华女性时尚配饰网上商店:Monnier Frères
2016/08/27 全球购物
美国购车网站:TrueCar
2016/10/19 全球购物
Lampegiganten丹麦:欧洲领先的照明网上商店
2018/04/25 全球购物
一个SQL面试题
2014/08/21 面试题
六查六看剖析材料
2014/02/15 职场文书
乡镇干部个人对照检查材料(群众路线)
2014/09/26 职场文书
大学体育课感想
2015/08/10 职场文书
火锅店的开业营销方案范本!
2019/07/05 职场文书
通过shell脚本对mysql的增删改查及my.cnf的配置
2021/07/07 MySQL
使用Spring处理x-www-form-urlencoded方式
2021/11/02 Java/Android
Vue+TypeScript中处理computed方式
2022/04/02 Vue.js