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 相关文章推荐
Ruffy javascript 学习笔记
Nov 30 Javascript
如何用JavaScript动态呼叫函数(两种方式)
May 03 Javascript
js动态创建标签示例代码
Jun 09 Javascript
基于vue实现分页/翻页组件paginator示例
Mar 09 Javascript
Vue2 使用 Echarts 创建图表实例代码
May 18 Javascript
BootStrap Table前台和后台分页对JSON格式的要求
Jun 28 Javascript
js学习总结_基于数据类型检测的四种方式(必看)
Jul 04 Javascript
微信小程序scroll-view仿拼多多横向滑动滚动条
Apr 21 Javascript
Vue开发实现吸顶效果的示例代码
Aug 21 Javascript
webpack4简单入门实例
Sep 06 Javascript
vue中v-for通过动态绑定class实现触发效果
Dec 06 Javascript
实例详解vue中的$root和$parent
Apr 29 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
phpcms手机内容页面添加上一篇和下一篇
2015/06/05 PHP
浅谈php中变量的数据类型判断函数
2017/03/04 PHP
php使用curl下载指定大小的文件实例代码
2017/09/30 PHP
PHP开发api接口安全验证操作实例详解
2020/03/26 PHP
top.location.href 没有权限 解决方法
2008/08/05 Javascript
JavaScript 核心参考教程 内置对象
2009/10/13 Javascript
JavaScript中的迭代器和生成器详解
2014/10/29 Javascript
javascript实现设置、获取和删除Cookie的方法
2015/06/01 Javascript
js小数运算出现多位小数如何解决
2015/10/08 Javascript
jQuery自定义动画函数实例详解(附demo源码)
2015/12/10 Javascript
学习使用AngularJS文件上传控件
2016/02/16 Javascript
全面了解addEventListener和on的区别
2016/07/14 Javascript
AngularJS基础 ng-hide 指令用法及示例代码
2016/08/01 Javascript
js浏览器html5表单验证
2016/10/17 Javascript
JS获取本周周一,周末及获取任意时间的周一周末功能示例
2017/02/09 Javascript
详解Vue 事件驱动和依赖追踪
2017/04/22 Javascript
ES6学习笔记之map、set与数组、对象的对比
2018/03/01 Javascript
vue中多个倒计时实现代码实例
2019/03/27 Javascript
微信小程序开发打开另一个小程序的实现方法
2020/05/17 Javascript
vue data有值,但是页面{{}} 取不到值的解决
2020/11/09 Javascript
[01:07]DOTA2次级职业联赛 - Fpb战队宣传片
2014/12/01 DOTA
[41:52]2018DOTA2亚洲邀请赛3月29日 小组赛A组 TNC VS OpTic
2018/03/30 DOTA
Python通过websocket与js客户端通信示例分析
2014/06/25 Python
python简单实现操作Mysql数据库
2018/01/29 Python
cmd运行python文件时对结果进行保存的方法
2018/05/16 Python
Pandas Shift函数的基础入门学习笔记
2018/11/16 Python
利用Python半自动化生成Nessus报告的方法
2019/03/19 Python
Python发送手机动态验证码代码实例
2020/02/28 Python
Python Tkinter实例——模拟掷骰子
2020/10/24 Python
初中生评语大全
2014/04/24 职场文书
七年级上册语文教学计划
2015/01/22 职场文书
2015年学雷锋活动总结
2015/02/06 职场文书
业务员管理制度范本
2015/08/06 职场文书
教你使用pyinstaller打包Python教程
2021/05/27 Python
Java循环队列与非循环队列的区别总结
2021/06/22 Java/Android
MySQL配置主从服务器(一主多从)
2021/08/07 MySQL