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 相关文章推荐
该如何加载google-analytics(或其他第三方)的JS
May 13 Javascript
jQuery 选择器、DOM操作、事件、动画
Nov 25 Javascript
jQuery之end()和pushStack()使用介绍
Feb 07 Javascript
JavaScript事件处理器中的event参数使用介绍
May 24 Javascript
json+jQuery实现的无限级树形菜单效果代码
Aug 27 Javascript
跟我学习javascript的prototype原型和原型链
Nov 18 Javascript
深入探究JavaScript中for循环的效率问题及相关优化
Mar 13 Javascript
uploader秒传图片到服务器完整代码
Apr 22 Javascript
基于webpack-hot-middleware热加载相关错误的解决方法
Feb 22 Javascript
Vue CLI 3搭建vue+vuex最全分析(推荐)
Sep 27 Javascript
探索浏览器页面关闭window.close()的使用详解
Aug 21 Javascript
vue 使用微信jssdk,调用微信相册上传图片功能
Nov 13 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/06/19 PHP
写的htc的数据表格
2007/01/20 Javascript
checkbox 多选框 联动实现代码
2008/10/22 Javascript
javascript 写类方式之九
2009/07/05 Javascript
jquery模拟LCD 时钟的html文件源代码
2014/06/16 Javascript
一个获取第n个元素节点的js函数
2014/09/02 Javascript
完善的jquery处理机制
2016/02/21 Javascript
js css+html实现简单的日历
2016/07/14 Javascript
简单实现js浮动框
2016/12/13 Javascript
通过js修改input、select默认字体颜色
2017/04/19 Javascript
深入理解ES6中let和闭包
2018/02/22 Javascript
详解create-react-app 自定义 eslint 配置
2018/06/07 Javascript
JavaScript实现简易计算器小功能
2020/10/22 Javascript
js数组的基本使用总结
2021/01/18 Javascript
[51:53]完美世界DOTA2联赛决赛日 Inki vs LBZS 第二场 11.08
2020/11/10 DOTA
Python实现向服务器请求压缩数据及解压缩数据的方法示例
2017/06/09 Python
基于Django filter中用contains和icontains的区别(详解)
2017/12/12 Python
Python解析并读取PDF文件内容的方法
2018/05/08 Python
Python3中详解fabfile的编写
2018/06/24 Python
基于Python3.6+splinter实现自动抢火车票
2018/09/25 Python
深入理解Django自定义信号(signals)
2018/10/15 Python
Python离线安装PIL 模块的方法
2019/01/08 Python
python实现图像检索的三种(直方图/OpenCV/哈希法)
2019/08/08 Python
python使用pip安装SciPy、SymPy、matplotlib教程
2019/11/20 Python
Pycharm 安装 idea VIM插件的图文教程详解
2020/02/21 Python
在python image 中实现安装中文字体
2020/05/16 Python
Django实现微信小程序支付的示例代码
2020/09/03 Python
css3选择器基本介绍
2014/12/15 HTML / CSS
美国最好的葡萄酒网上商店:Wine Library
2019/11/02 全球购物
数学系毕业生求职信
2014/05/29 职场文书
医学求职自荐信
2014/06/21 职场文书
税务职业生涯规划书范文
2014/09/16 职场文书
2014年办公室主任工作总结
2014/11/12 职场文书
2019年入党思想汇报
2019/03/25 职场文书
正能量励志演讲稿三分钟(范文)
2019/07/11 职场文书
周一早安温馨问候祝福语!
2019/07/15 职场文书