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 相关文章推荐
window.location.hash 属性使用说明
Mar 20 Javascript
IE8 chrome中table隔行换色解决办法
Jul 09 Javascript
JQuery中$.each 和$(selector).each()的区别详解
Mar 13 Javascript
jQuery仿gmail实现fixed布局的方法
May 27 Javascript
js+canvas绘制五角星的方法
Jan 28 Javascript
JS装饰器函数用法总结
Apr 21 Javascript
vue内置组件transition简单原理图文详解(小结)
Jul 12 Javascript
一个小时快速搭建微信小程序的方法步骤
Apr 15 Javascript
详解微信小程序文件下载--视频和图片
Apr 24 Javascript
vue中v-show和v-if的异同及v-show用法
Jun 06 Javascript
javascript canvas实现简易时钟例子
Sep 05 Javascript
基于JavaScript实现简单扫雷游戏
Jan 02 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
一个取得文件扩展名的函数
2006/10/09 PHP
PHP+MySQL投票系统的设计和实现分享
2012/09/23 PHP
PHP不使用内置函数实现字符串转整型的方法示例
2017/07/03 PHP
PHP实现的简单路由和类自动加载功能
2018/03/13 PHP
深入研究PHP中的preg_replace和代码执行
2018/08/15 PHP
PHP 枚举类型的管理与设计知识点总结
2020/02/13 PHP
JS与框架页的操作代码
2010/01/17 Javascript
javascript仿qq界面的折叠菜单实现代码
2012/12/12 Javascript
JavaScript将数组转换成CSV格式的方法
2015/03/19 Javascript
JavaScript动态添加事件之事件委托
2016/07/12 Javascript
引用jquery框架后出错的解决方法
2016/08/09 Javascript
利用JS对iframe父子(内外)页面进行操作的方法教程
2017/06/15 Javascript
在Vue项目中引入腾讯验证码服务的教程
2018/04/03 Javascript
Vue入门之animate过渡动画效果
2018/04/08 Javascript
微信小程序npm引入vant-weapp的踩坑记录
2019/08/01 Javascript
Python编程中对文件和存储器的读写示例
2016/01/25 Python
Python+PIL实现支付宝AR红包
2018/02/09 Python
matplotlib给子图添加图例的方法
2018/08/03 Python
linux安装Python3.4.2的操作方法
2018/09/28 Python
对python 树状嵌套结构的实现思路详解
2019/08/09 Python
python异常处理、自定义异常、断言原理与用法分析
2020/03/23 Python
Python爬虫使用bs4方法实现数据解析
2020/08/25 Python
俄罗斯香水在线商店:AromaCode
2019/12/04 全球购物
怎样写留学自荐信
2013/11/11 职场文书
应届毕业生个人自荐信范文
2013/11/30 职场文书
学院书画协会部门岗位职责
2013/12/01 职场文书
超市采购员岗位职责
2014/02/01 职场文书
电力公司个人求职信范文
2014/02/04 职场文书
报告会主持词
2014/04/02 职场文书
物流管理专业求职信
2014/05/29 职场文书
预备党员转正考核材料
2014/06/03 职场文书
演讲稿开场白台词
2014/08/25 职场文书
领导干部贪图享乐整改措施
2014/09/21 职场文书
个人租房协议书
2014/11/28 职场文书
大学生团员个人总结
2015/02/14 职场文书
Python 制作自动化翻译工具
2021/04/25 Python