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 相关文章推荐
IE浏览器PNG图片透明效果代码
Sep 02 Javascript
javascript淡入淡出效果的实现思路
Mar 31 Javascript
基于SVG的web页面图形绘制API介绍及编程演示
Jun 28 Javascript
jQuery $命名冲突解决方案汇总
Nov 13 Javascript
javascript字符串与数组转换汇总
May 26 Javascript
jQuery实现html表格动态添加新行的方法
May 28 Javascript
微信小程序(应用号)开发新闻客户端实例
Oct 24 Javascript
xmlplus组件设计系列之选项卡(Tabbar)(5)
May 03 Javascript
简单的vuex 的使用案例笔记
Apr 13 Javascript
工作中常用到的ES6语法
Sep 04 Javascript
Vue中JS动画与Velocity.js的结合使用
Feb 13 Javascript
用JavaScript实现贪吃蛇游戏
Oct 23 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
虹吸壶煮咖啡26个注意事项
2021/03/03 冲泡冲煮
PHP4 与 MySQL 交互使用
2006/10/09 PHP
php array_map array_multisort 高效处理多维数组排序
2009/06/11 PHP
php、mysql查询当天,查询本周,查询本月的数据实例(字段是时间戳)
2017/02/04 PHP
JavaScript实现禁止后退的方法
2006/12/27 Javascript
基于jquery的一个简单的脚本验证插件
2010/04/05 Javascript
JavaScript 高级篇之闭包、模拟类,继承(五)
2012/04/07 Javascript
JavaScript中如何通过arguments对象实现对象的重载
2014/05/12 Javascript
html的DOM中document对象anchors集合用法实例
2015/01/21 Javascript
jQuery实现新消息在网页标题闪烁提示
2015/06/23 Javascript
jQuery幻灯片特效代码分享--鼠标滑过按钮时切换(2)
2020/11/18 Javascript
BootStrap的JS插件之轮播效果案例详解
2016/05/16 Javascript
javascript实现简易计算器的代码
2016/05/31 Javascript
js接收并转化Java中的数组对象的方法
2016/08/11 Javascript
Vue.js每天必学之组件与组件间的通信
2016/09/08 Javascript
Vue Spa切换页面时更改标题的实例代码
2017/07/15 Javascript
移动设备手势事件库Touch.js使用详解
2017/08/18 Javascript
Vue header组件开发详解
2018/01/26 Javascript
使用Angular9和TypeScript开发RPG游戏的方法
2020/03/25 Javascript
在vue中使用Echarts利用watch做动态数据渲染操作
2020/07/20 Javascript
python通过pil将图片转换成黑白效果的方法
2015/03/16 Python
python实现的系统实用log类实例
2015/06/30 Python
Python 编码Basic Auth使用方法简单实例
2017/05/25 Python
使用python 3实现发送邮件功能
2018/06/15 Python
python 并发下载器实现方法示例
2019/11/22 Python
解决Django Haystack全文检索为空的问题
2020/05/19 Python
django前端页面下拉选择框默认值设置方式
2020/08/09 Python
财务支持类个人的自我评价
2014/02/14 职场文书
无偿献血倡议书
2014/04/14 职场文书
小学生纪念九一八事变演讲稿
2014/09/14 职场文书
2015年个人现实表现材料
2014/12/10 职场文书
网站文案策划岗位职责
2015/04/14 职场文书
买卖合同纠纷代理词
2015/05/25 职场文书
2015个人年度工作总结范文
2015/05/28 职场文书
Feign调用全局异常处理解决方案
2021/06/24 Java/Android
详解Vue中$props、$attrs和$listeners的使用方法
2022/02/18 Vue.js