JavaScript设计模式之代理模式简单实例教程


Posted in Javascript onJuly 03, 2018

本文实例讲述了JavaScript设计模式之代理模式。分享给大家供大家参考,具体如下:

一、代理模式概念

代理,顾名思义就是帮助别人做事,GoF对代理模式的定义如下:

代理模式(Proxy),为其他对象提供一种代理以控制对这个对象的访问。代理模式使得代理对象控制具体对象的引用。代理几乎可以是任何对象:文件,资源,内存中的对象,或者是一些难以复制的东西。

解释:房屋中介,可以代理帮助卖家把房子卖给买家,这中间卖家说要卖的价钱就可以了,买家也可以提出自己要买的房型,中介可以帮忙处理中间环节。最后达成买卖。中介可以同时代理很多房屋买卖,并且可以代理租房事宜。

代理模式的组成:

抽象角色:通过接口或抽象类声明真实角色实现的业务方法。

代理角色:实现抽象角色,是真实角色的代理,通过真实角色的业务逻辑方法来实现抽象方法,并可以附加自己的操作。

真实角色:实现抽象角色,定义真实角色所要实现的业务逻辑,供代理角色调用。

二、代理模式的作用和注意事项

模式作用:

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){
//   console.log("收到了来自【"+this.maijia_name+"】"+money+"人民币");
   console.log("收到了来自【"+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){
   console.log("收到了钱"+money);
  }
 }
 (new to()).maifang();
 to().maifang();
</script>
</body>
</html>

使用在线HTML/CSS/JavaScript代码运行工具 http://tools.3water.com/code/HtmlJsRun测试运行效果如下:

JavaScript设计模式之代理模式简单实例教程

更多关于JavaScript相关内容可查看本站专题:《javascript面向对象入门教程》、《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
jquery的extend和fn.extend的使用说明
Jan 09 Javascript
JS简单的图片放大缩小的两种方法
Nov 11 Javascript
jquery动态改变onclick属性导致失效的问题解决方法
Dec 04 Javascript
js 数值转换为3位逗号分隔的示例代码
Feb 19 Javascript
通过js为元素添加多项样式,浏览器全兼容写法
Aug 30 Javascript
JavaScript中的方法调用详细介绍
Dec 30 Javascript
jquery实现鼠标悬浮停止轮播特效
Aug 20 Javascript
javascript日期验证之输入日期大于等于当前日期
Dec 13 Javascript
Bootstrap CSS布局之代码
Dec 17 Javascript
jQuery实现遍历XML节点和属性的方法示例
Apr 29 jQuery
JavaScript实现简单动态表格
Dec 02 Javascript
AJAX学习笔记
May 18 Javascript
详解Vue中使用Echarts的两种方式
Jul 03 #Javascript
vue awesome swiper异步加载数据出现的bug问题
Jul 03 #Javascript
JavaScript设计模式之工厂模式简单实例教程
Jul 03 #Javascript
js实现各浏览器全屏代码实例
Jul 03 #Javascript
React Native基础入门之初步使用Flexbox布局
Jul 02 #Javascript
JavaScript设计模式之构造函数模式实例教程
Jul 02 #Javascript
vue-router 源码实现前端路由的两种方式
Jul 02 #Javascript
You might like
第九节 绑定 [9]
2006/10/09 PHP
PHP中time(),date(),mktime()区别介绍
2013/09/28 PHP
php网页病毒清除类
2014/12/08 PHP
如何使用php实现评委评分器
2015/07/31 PHP
PHP实现打包下载文件的方法示例
2017/10/07 PHP
Yii2框架实现利用mpdf创建pdf文件功能示例
2019/02/08 PHP
一个可以兼容IE FF的加为首页与加入收藏实现代码
2009/11/02 Javascript
js为数字添加逗号并格式化数字的代码
2013/08/23 Javascript
标题过长使用javascript按字节截取字符串
2014/04/24 Javascript
JS+CSS实现可拖动的弹出提示框
2015/02/16 Javascript
每日十条JavaScript经验技巧(一)
2016/06/23 Javascript
关闭Vue计算属性自带的缓存功能方法
2018/03/02 Javascript
cnpm加速Angular项目创建的方法
2018/09/07 Javascript
IE9 elementUI文件上传的问题解决
2018/10/17 Javascript
微信小程序实现动态列表项的顺序加载动画
2019/07/25 Javascript
用js限制网页只在微信浏览器中打开(或者只能手机端访问)
2020/12/24 Javascript
javascript实现贪吃蛇游戏(娱乐版)
2020/08/17 Javascript
基于JavaScript实现随机点名器
2021/02/25 Javascript
django之常用命令详解
2016/06/30 Python
怎样使用Python脚本日志功能
2016/08/14 Python
Python实现删除文件中含“指定内容”的行示例
2017/06/09 Python
在windows下Python打印彩色字体的方法
2018/05/15 Python
python 爬虫一键爬取 淘宝天猫宝贝页面主图颜色图和详情图的教程
2018/05/22 Python
python自定义线程池控制线程数量的示例
2019/02/22 Python
Java方面的关于数组和继承的笔面试题
2015/09/18 面试题
文员个人的求职信范文
2013/09/26 职场文书
大学生职业生涯规划书模板
2014/01/03 职场文书
七一党建活动方案
2014/01/28 职场文书
新闻编辑专业自荐信
2014/07/02 职场文书
六查六看六改心得体会
2014/10/14 职场文书
2014年民政工作总结
2014/11/26 职场文书
2014年惩防体系建设工作总结
2014/12/01 职场文书
2015年小学教导处工作总结
2015/05/26 职场文书
格列夫游记读书笔记
2015/07/01 职场文书
《狮子和鹿》教学反思
2016/02/16 职场文书
PHP设计模式(观察者模式)
2021/07/07 PHP