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 相关文章推荐
Ext.get() 和 Ext.query()组合使用实现最灵活的取元素方式
Sep 26 Javascript
jquery和ajax的关系详细介绍
Nov 29 Javascript
angularjs中的单元测试实例
Dec 06 Javascript
jQuery插件实现表格隔行变色及鼠标滑过高亮显示效果代码
Feb 25 Javascript
JavaScript制作简单的日历效果
Mar 10 Javascript
用js动态添加html元素,以及属性的简单实例
Jul 19 Javascript
javascript和jQuery实现网页实时聊天的ajax长轮询
Jul 20 Javascript
Vue的MVVM实现方法
Aug 16 Javascript
深入理解Vue Computed计算属性原理
May 29 Javascript
Bootstrap标签页(Tab)插件切换echarts不显示问题的解决
Jul 13 Javascript
vue实现微信分享链接添加动态参数的方法
Apr 29 Javascript
工作中常用js功能汇总
Nov 07 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
再推荐十款免费的php开发工具
2015/11/09 PHP
php使用正则表达式去掉html中的注释方法
2016/11/03 PHP
模拟select的代码
2011/10/19 Javascript
js代码实现无缝滚动(文字和图片)
2015/08/20 Javascript
JavaScript高级教程5.6之基本包装类型(详细)
2015/11/23 Javascript
jQuery form插件之ajaxForm()和ajaxSubmit()的可选参数项对象
2016/01/23 Javascript
基于JavaScript实现前端文件的断点续传
2016/10/17 Javascript
遍历js中对象的属性和值的实例
2016/11/21 Javascript
javascript学习之json入门
2016/12/22 Javascript
form表单数据封装成json格式并提交给服务器的实现方法
2017/12/14 Javascript
Vue2.x通用编辑组件的封装及应用详解
2019/05/28 Javascript
javascript实现弹出层效果
2019/12/10 Javascript
JavaScript中的惰性载入函数及优势
2020/02/18 Javascript
element 中 el-menu 组件的无限极循环思路代码详解
2020/04/26 Javascript
python通过ElementTree操作XML获取结点读取属性美化XML
2013/12/02 Python
pycharm 使用心得(五)断点调试
2014/06/06 Python
Python、Javascript中的闭包比较
2015/02/04 Python
django foreignkey外键使用的例子 相当于left join
2019/08/06 Python
使用Python串口实时显示数据并绘图的例子
2019/12/26 Python
找Python安装目录,设置环境路径以及在命令行运行python脚本实例
2020/03/09 Python
基于Django signals 信号作用及用法详解
2020/03/28 Python
python批量生成身份证号到Excel的两种方法实例
2021/01/14 Python
英国经典球衣网站:Classic Football Shirts
2017/05/20 全球购物
TCP/IP的分层模型
2013/10/27 面试题
毕业实习个人鉴定范文
2013/12/10 职场文书
园林施工员岗位职责
2013/12/11 职场文书
小学生新年寄语
2014/04/03 职场文书
2014党员四风对照检查材料思想汇报
2014/09/17 职场文书
2015教师节师德演讲稿
2015/03/19 职场文书
2015年社区卫生工作总结
2015/04/21 职场文书
2015年六年级班主任工作总结
2015/10/15 职场文书
2016年暑假学生家长评语
2015/12/01 职场文书
52条SQL语句教你性能优化
2021/05/25 MySQL
Java实现聊天机器人完善版
2021/07/04 Java/Android
Element实现动态表格的示例代码
2021/08/02 Javascript
SpringBoot整合阿里云视频点播的过程详解
2021/12/06 Java/Android