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 相关文章推荐
编写兼容IE和FireFox的脚本
May 18 Javascript
利用WebBrowser彻底解决Web打印问题(包括后台打印)
Jun 22 Javascript
jQuery使用$.ajax进行即时验证实例详解
Dec 11 Javascript
jquery if条件语句的写法
May 19 Javascript
JS高仿抛物线加入购物车特效实现代码
Feb 20 Javascript
jquery实现手机端单店铺购物车结算删除功能
Feb 22 Javascript
fckeditor部署到weblogic出现xml无法读取及样式不能显示问题的解决方法
Mar 24 Javascript
JavaScript设计模式之策略模式详解
Jun 09 Javascript
angular2系列之路由转场动画的示例代码
Nov 09 Javascript
JS实现获取word文档内容并输出显示到html页面示例
Jun 23 Javascript
使用JS判断页面是首次被加载还是刷新
May 26 Javascript
详解ng-alain动态表单SF表单项设置必填和正则校验
Jun 11 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
解析coreseek for sphinx的使用
2013/06/21 PHP
PHP实现今天是星期几的几种写法
2013/09/26 PHP
在PHP模板引擎smarty生成随机数的方法和math函数详解
2014/04/24 PHP
PHP递归遍历多维数组实现无限分类的方法
2016/05/06 PHP
php array_walk 对数组中的每个元素应用用户自定义函数详解
2016/11/18 PHP
laravel中的fillable和guarded属性详解
2019/10/23 PHP
CSS心形加载的动画源码的实现
2021/03/09 HTML / CSS
AngularJS基础知识笔记之表格
2015/05/10 Javascript
11种ASP连接数据库的方法
2015/09/18 Javascript
jquery实现简单的banner轮播效果【实例】
2016/03/30 Javascript
easyui combotree加载静态数据问题(选不上)解决方法
2016/12/26 Javascript
ES6下React组件的写法示例代码
2017/05/04 Javascript
vue2的todolist入门小项目的详细解析
2017/05/11 Javascript
深入理解vue-loader如何使用
2017/06/06 Javascript
AngularJS 控制器 controller的详解
2017/10/17 Javascript
小程序ios音频播放没声音问题的解决
2018/07/11 Javascript
Bootstrap实现前端登录页面带验证码功能完整示例
2020/03/26 Javascript
vue-router为激活的路由设置样式操作
2020/07/18 Javascript
[39:18]完美世界DOTA2联赛PWL S3 Forest vs LBZS 第二场 12.17
2020/12/19 DOTA
在Python中使用mechanize模块模拟浏览器功能
2015/05/05 Python
win10系统下Anaconda3安装配置方法图文教程
2018/09/19 Python
python智联招聘爬虫并导入到excel代码实例
2019/09/09 Python
Python Numpy数组扩展repeat和tile使用实例解析
2019/12/09 Python
简单了解Python读取大文件代码实例
2019/12/18 Python
用Python爬取LOL所有的英雄信息以及英雄皮肤的示例代码
2020/07/13 Python
8种常用的Python工具
2020/08/05 Python
Python生成并下载文件后端代码实例
2020/08/31 Python
老海军美国官网:Old Navy
2016/09/05 全球购物
Haggar官网:美国男装品牌
2020/02/16 全球购物
自主招生学校推荐信
2014/09/26 职场文书
单位员工收入证明样本
2014/10/09 职场文书
大学运动会通讯稿
2015/07/18 职场文书
音乐课《小猫钓鱼》教学反思
2016/02/18 职场文书
python 爬取京东指定商品评论并进行情感分析
2021/05/27 Python
浅谈Python响应式类库RxPy
2021/06/14 Python
Nginx缓存设置案例详解
2021/09/15 Servers