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和ActionScript的交互实现代码
Aug 01 Javascript
seaJs的模块定义和模块加载浅析
Jun 06 Javascript
Mac下使用charles遇到的问题以及解决办法
Jan 10 Javascript
js实现自动轮换选项卡
Jan 13 Javascript
jquery.flot.js简单绘制折线图用法示例
Mar 13 Javascript
JavaScript中在光标处插入添加文本标签节点的详细方法
Mar 22 Javascript
javascript与PHP动态往类中添加方法对比
Mar 21 Javascript
VUE2.0中Jsonp的使用方法
May 22 Javascript
Vue脚手架的简单使用实例
Jul 10 Javascript
JavaScript引用类型之基本包装类型实例分析【Boolean、Number和String】
Aug 09 Javascript
node读写Excel操作实例分析
Nov 06 Javascript
详解阿里Node.js技术文档之process模块学习指南
Jan 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和ACCESS写聊天室(三)
2006/10/09 PHP
不要轻信 PHP_SELF的安全问题
2009/09/05 PHP
PHP set_error_handler()函数使用详解(示例)
2013/11/12 PHP
PHP5.2下preg_replace函数的问题
2015/05/08 PHP
php mysql实现mysql_select_db选择数据库
2016/12/30 PHP
PHP实现带进度条的Ajax文件上传功能示例
2019/07/02 PHP
PHP实现的文件浏览器功能简单示例
2019/09/12 PHP
基于jQuery图片平滑连续滚动插件
2009/04/27 Javascript
JS 无法通过W3C验证的处理方法
2010/03/09 Javascript
js实现图片漂浮效果的方法
2015/03/02 Javascript
JavaScript DOM进阶方法
2015/04/13 Javascript
JavaScript实现仿淘宝商品购买数量的增减效果
2016/01/22 Javascript
基于Angularjs实现分页功能
2016/05/30 Javascript
浅谈JavaScript函数的四种存在形态
2016/06/08 Javascript
浅谈angularjs module返回对象的坑(推荐)
2016/10/21 Javascript
Bootstrap fileinput组件封装及使用详解
2017/03/10 Javascript
bootstrap多层模态框滚动条消失的问题
2017/07/21 Javascript
jQuery中.attr()和.data()的区别分析
2017/09/03 jQuery
详解ES6 系列之异步处理实战
2018/10/26 Javascript
微信小程序开发之点击按钮退出小程序的实现方法
2019/04/26 Javascript
ES6 Promise对象的含义和基本用法分析
2019/06/14 Javascript
JS实现音乐导航特效
2020/01/06 Javascript
JavaScript基于面向对象实现的无缝滚动轮播示例
2020/01/17 Javascript
深入浅出学习python装饰器
2017/09/29 Python
Python实现随机生成手机号及正则验证手机号的方法
2018/04/25 Python
python覆盖写入,追加写入的实例
2019/06/26 Python
详解Python中打乱列表顺序random.shuffle()的使用方法
2019/11/11 Python
Python3.9.1中使用match方法详解
2021/02/08 Python
HTML5拖放效果的实现代码
2016/11/17 HTML / CSS
Book Depository亚太地区:一家领先的国际图书零售商
2019/05/05 全球购物
斯洛伐克电子产品购物网站:DATART
2020/04/05 全球购物
Linux Interview Questions For software testers
2013/05/17 面试题
2014年组织委员工作总结
2014/12/01 职场文书
2016暑期社会实践新闻稿
2015/11/25 职场文书
如何撰写出一份完美的商业计划书?
2019/07/12 职场文书
Spring Boot项目如何优雅实现Excel导入与导出功能
2022/06/10 Java/Android