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 相关文章推荐
PJBlog插件 防刷新的在线播放器
Oct 25 Javascript
JavaScript 字符串连接性能优化
Dec 20 Javascript
Jquery AJAX 框架的使用方法
Nov 03 Javascript
20个非常棒的 jQuery 幻灯片插件和教程分享
Aug 23 Javascript
jQuery源码分析-03构造jQuery对象-源码结构和核心函数
Nov 14 Javascript
js循环改变div颜色具体方法
Jun 25 Javascript
在javascript中实现函数数组的方法
Dec 25 Javascript
js中flexible.js实现淘宝弹性布局方案
Jun 23 Javascript
jQuery+HTML5实现弹出创意搜索框层
Dec 29 Javascript
详解如何用webpack打包一个网站应用项目
Jul 12 Javascript
浅谈vue中使用图片懒加载vue-lazyload插件详细指南
Oct 23 Javascript
全面解析js中的原型,原型对象,原型链
Jan 25 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 记录进行累加并显示总时长为秒的结果
2011/11/04 PHP
php中curl和file_get_content的区别
2014/05/10 PHP
php使用fsockopen函数发送post,get请求获取网页内容的方法
2014/11/15 PHP
Yii的CDbCriteria查询条件用法实例
2014/12/04 PHP
yii2.0整合阿里云oss的示例代码
2017/09/19 PHP
js类后台管理菜单类-MenuSwitch
2007/09/12 Javascript
JQuery 网站换肤功能实现代码
2009/11/02 Javascript
location对象的属性和方法应用(解析URL)
2013/04/12 Javascript
javascript轻松实现当鼠标移开时已弹出子菜单自动消失
2013/12/29 Javascript
jQuery截取指定长度字符串的实现原理及代码
2014/07/01 Javascript
浅谈JavaScript中的String对象常用方法
2015/02/25 Javascript
js实现Select列表各项上移和下移的方法
2015/08/14 Javascript
js中javascript:void(0) 真正含义
2020/11/05 Javascript
JS不用正则验证输入的字符串是否为空(包含空格)的实现代码
2016/06/14 Javascript
javascript实现无法关闭的弹框
2016/11/27 Javascript
深入理解选择框脚本[推荐]
2016/12/13 Javascript
jQuery实现可拖拽3D万花筒旋转特效
2017/01/03 Javascript
js实现炫酷的左右轮播图
2017/01/18 Javascript
JS函数节流和防抖之间的区分和实现详解
2019/01/11 Javascript
vue项目部署到nginx/tomcat服务器的实现
2019/08/26 Javascript
利用python实现简单的循环购物车功能示例代码
2017/07/05 Python
浅谈python中列表、字符串、字典的常用操作
2017/09/19 Python
django2 快速安装指南分享
2018/01/05 Python
python3实现名片管理系统
2020/11/29 Python
python 获取url中的参数列表实例
2018/12/18 Python
Python使用POP3和SMTP协议收发邮件的示例代码
2019/04/16 Python
华为校园招聘上机笔试题 扑克牌大小(python)
2020/04/22 Python
python 计算两个列表的相关系数的实现
2019/08/29 Python
python能做哪方面的工作
2020/06/15 Python
HTML5的表单(绝对特别强大的功能)使用示例
2013/06/20 HTML / CSS
全球在线商店:BerryLook
2019/04/14 全球购物
如何减少垃圾回收让内存更加有效使用
2013/10/18 面试题
上班打牌检讨书
2014/02/07 职场文书
我爱我校演讲稿
2014/05/21 职场文书
优秀班主任事迹材料
2014/12/16 职场文书
出国留学单位推荐信
2015/03/26 职场文书