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 相关文章推荐
Javascript中常见的校验如域名、手机、邮箱等等
Jan 02 Javascript
javascript对中文按照拼音排序代码
Aug 20 Javascript
AngularJS进行性能调优的7个建议
Dec 28 Javascript
精通JavaScript的this关键字
May 28 Javascript
如何在Linux上安装Node.js
Apr 01 Javascript
jQuery深拷贝Json对象简单示例
Jul 06 Javascript
jQuery的图片轮播插件PgwSlideshow使用详解
Aug 11 Javascript
jquery实现ajax提交表单信息的简单方法(推荐)
Aug 24 Javascript
JS实现的DIV块来回滚动效果示例
Feb 07 Javascript
JavaScript中无法通过div.style.left获取值的解决方法
Feb 19 Javascript
微信小程序实现商品属性联动选择
Feb 15 Javascript
layui输入框只允许输入中文且判断长度的例子
Sep 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
php获取四位字母和数字的随机数的实现方法
2015/01/09 PHP
php关闭warning问题的解决方法
2016/05/17 PHP
laravel学习教程之存取器
2016/07/30 PHP
php中时间函数date及常用的时间计算
2017/05/12 PHP
jQuery第三课 修改元素属性及内容的代码
2010/03/14 Javascript
解决jquery的.animate()函数在IE6下的问题
2010/12/03 Javascript
深入领悟JavaScript中的面向对象
2013/11/18 Javascript
JS Loading功能的简单实现
2013/11/29 Javascript
javascript贪吃蛇完整版(源码)
2013/12/09 Javascript
JavaScript中用getDate()方法返回指定日期的教程
2015/06/09 Javascript
简介JavaScript中的getUTCFullYear()方法的使用
2015/06/10 Javascript
不能不知道的10个angularjs英文学习网站
2016/03/23 Javascript
基于jQuery倒计时插件实现团购秒杀效果
2016/05/13 Javascript
JavaScript实现页面跳转的方式汇总
2016/05/16 Javascript
javascript类型系统_正则表达式RegExp类型详解
2016/06/24 Javascript
基于AngularJS实现表单验证功能
2017/07/28 Javascript
Angularjs中ng-repeat的简单实例
2017/08/25 Javascript
基于node.js的fs核心模块读写文件操作(实例讲解)
2017/09/10 Javascript
angular ng-model 无法获取值的处理方法
2018/10/02 Javascript
socket io与vue-cli的结合使用的示例代码
2018/11/01 Javascript
javascript防抖函数debounce详解
2019/06/11 Javascript
Vuex实现数据共享的方法
2019/12/20 Javascript
小程序实现背景音乐播放和暂停
2020/06/19 Javascript
Python提取转移文件夹内所有.jpg文件并查看每一帧的方法
2019/06/27 Python
用vue.js组件模拟v-model指令实例方法
2019/07/05 Python
Django处理Ajax发送的Get请求代码详解
2019/07/29 Python
在PyTorch中Tensor的查找和筛选例子
2019/08/18 Python
利用Python实现最小二乘法与梯度下降算法
2021/02/21 Python
美国儿童玩具、装扮和玩偶商店:Magic Cabin
2018/09/02 全球购物
机械设计毕业生自荐信
2014/02/02 职场文书
银行类自荐信
2014/02/04 职场文书
教师职称自我鉴定
2014/02/12 职场文书
应急管理培训方案
2014/06/12 职场文书
2014国庆节幼儿园亲子活动方案
2014/09/16 职场文书
事业单位年度考核评语
2014/12/31 职场文书
2015暑期爱心支教策划书
2015/07/14 职场文书