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 相关文章推荐
用Javscript实现表单复选框的全选功能
May 25 Javascript
用函数式编程技术编写优美的 JavaScript_ibm
May 16 Javascript
JavaScript中prototype为对象添加属性的误区介绍
Oct 15 Javascript
动态添加option及createElement使用示例
Jan 26 Javascript
jQuery的cookie插件实现保存用户登陆信息
Apr 15 Javascript
JavaScript解析json格式数据简单示例
Dec 09 Javascript
浅述Javascript的外部对象
Dec 07 Javascript
Angular实现双向折叠列表组件的示例代码
Nov 21 Javascript
springMvc 前端用json的方式向后台传递对象数组方法
Aug 07 Javascript
React事件处理的机制及原理
Dec 03 Javascript
Vue Echarts实现可视化世界地图代码实例
May 07 Javascript
Node.js系列之安装配置与基本使用(1)
Aug 30 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生成随机字符串(3种方法)
2015/09/25 PHP
浅析Yii2 GridView 日期格式化并实现日期可搜索教程
2016/04/22 PHP
php 修改上传文件大小限制实例详解
2016/10/23 PHP
JS文本框默认值处理详解
2013/07/10 Javascript
JavaScript实现简单的时钟实例代码
2013/11/23 Javascript
Jquery对数组的操作技巧整理
2014/03/25 Javascript
jquery防止重复执行动画避免页面混乱
2014/04/22 Javascript
js实现div闪烁原理及实现代码
2014/06/24 Javascript
一个支付页面DEMO附截图
2014/07/22 Javascript
node.js中的fs.futimes方法使用说明
2014/12/17 Javascript
用队列模拟jquery的动画算法实例
2015/01/20 Javascript
js实现Select列表内容自动滚动效果代码
2015/08/20 Javascript
6种javascript显示当前系统时间代码
2015/12/01 Javascript
JS控制静态页面传递参数并获取参数应用
2016/08/10 Javascript
js实现html table 行,列锁定的简单实例
2016/10/13 Javascript
JS实现点击网页判断是否安装app并打开否则跳转app store
2016/11/18 Javascript
Bootstrap栅格系统学习笔记
2016/11/25 Javascript
Vue.js2.0中的变化小结
2017/10/24 Javascript
微信小程序如何修改本地缓存key中单个数据的详解
2019/04/26 Javascript
实现elementUI表单的全局验证的方法步骤
2019/04/29 Javascript
Vue+Koa2 打包后进行线上部署的教程详解
2019/07/31 Javascript
详解vue+axios给开发环境和生产环境配置不同的接口地址
2019/08/16 Javascript
微信小程序开发搜索功能实现(前端+后端+数据库)
2020/03/04 Javascript
python处理文本文件并生成指定格式的文件
2014/07/31 Python
Python中列表、字典、元组、集合数据结构整理
2014/11/20 Python
浅谈python中的占位符
2017/11/09 Python
Python 3.3实现计算两个日期间隔秒数/天数的方法示例
2019/01/07 Python
Django+python服务器部署与环境部署教程详解
2020/03/30 Python
Pytorch转keras的有效方法,以FlowNet为例讲解
2020/05/26 Python
美国电子产品折扣网站:Daily Steals
2017/05/20 全球购物
《乌塔》教学反思
2014/02/17 职场文书
公司中层干部的自我评价分享
2014/03/01 职场文书
教育合作协议范本
2014/10/17 职场文书
2015年度保密工作总结
2015/04/24 职场文书
小学班主任工作经验交流材料
2015/11/02 职场文书
社区志愿者服务心得体会
2016/01/22 职场文书