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 相关文章推荐
根据对象的某一属性进行排序的js代码(如:name,age)
Aug 10 Javascript
js防止表单重复提交实现代码
Sep 05 Javascript
关于jQuery判断元素是否存在的问题示例探讨
Jul 21 Javascript
jQuery获取URL请求参数的方法
Jul 18 Javascript
深入探讨javascript函数式编程
Oct 11 Javascript
jQuery Form 表单提交插件之formSerialize,fieldSerialize,fieldValue,resetForm,clearForm,clearFields的应用
Jan 23 Javascript
Node.js中JavaScript操作MySQL的常用方法整理
Mar 01 Javascript
详解Vue.js——60分钟组件快速入门(上篇)
Dec 05 Javascript
ES6学习之变量的解构赋值
Feb 12 Javascript
Node.js Buffer用法解读
May 18 Javascript
vue-cli3 热更新配置操作
Sep 18 Javascript
js实现简单图片拖拽效果
Feb 22 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自动获取目录下的模板的代码
2010/08/08 PHP
PHP中设置时区方法小结
2012/06/03 PHP
浅析PKI加密解密 OpenSSL
2013/07/01 PHP
php function用法如何递归及return和echo区别
2014/03/07 PHP
php生成QRcode实例
2014/09/22 PHP
php动态生成版权所有信息的方法
2015/03/24 PHP
php序列化函数serialize() 和 unserialize() 与原生函数对比
2015/05/08 PHP
疯掉了,尽然有js写的操作系统
2007/04/23 Javascript
JavaScript实现页面实时显示当前时间的简单实例
2013/07/20 Javascript
jquery eval解析JSON中的注意点介绍
2013/08/23 Javascript
JavaScript把数组作为堆栈使用的方法
2015/03/20 Javascript
JQuery中DOM事件冒泡实例分析
2015/06/13 Javascript
jqGrid 学习笔记整理——进阶篇(一 )
2016/04/17 Javascript
jQuery事件处理的特征(事件命名机制)
2016/08/23 Javascript
jQuery模拟完美实现经典FLASH导航动画效果【附demo源码下载】
2016/11/09 Javascript
Node解决简单重复问题系列之Excel内容的获取
2018/01/02 Javascript
vue框架中props的typescript用法详解
2020/02/17 Javascript
解决vue+elementui项目打包后样式变化问题
2020/08/03 Javascript
JavaScript实现alert弹框效果
2020/11/19 Javascript
Python的lambda匿名函数的简单介绍
2013/04/25 Python
Python计算字符宽度的方法
2016/06/14 Python
Python简单计算数组元素平均值的方法示例
2017/12/26 Python
python实现根据文件关键字进行切分为多个文件的示例
2018/12/10 Python
Python datetime 如何处理时区信息
2020/09/02 Python
细说CSS3中box属性中的overflow-x属性和overflow-y属性值的效果
2014/07/21 HTML / CSS
武汉高蓝德国际.net机试
2016/06/24 面试题
高中数学教学反思
2014/01/30 职场文书
个人安全承诺书
2014/05/22 职场文书
大学生思想道德自我评价
2015/03/09 职场文书
会计求职简历自我评价
2015/03/10 职场文书
2016教师节问候语
2015/11/10 职场文书
《索溪峪的野》教学反思
2016/02/19 职场文书
写作技巧:怎样写好一份优秀工作总结?
2019/08/14 职场文书
html5表单的required属性使用
2021/07/07 HTML / CSS
python数据可视化JupyterLab实用扩展程序Mito
2021/11/20 Python
vue ref如何获取子组件属性值
2022/03/31 Vue.js