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 相关文章推荐
javascript之锁定表格栏位
Jun 29 Javascript
Javascript 面向对象之重载
May 04 Javascript
JavaScript将Table导出到Excel实现思路及代码
Mar 13 Javascript
jQuery写的日历(包括日历的样式及功能)
Apr 23 Javascript
jQuery使用$.ajax进行即时验证的方法
Dec 08 Javascript
seajs学习之模块的依赖加载及模块API的导出
Oct 20 Javascript
学习vue.js表单控件绑定操作
Dec 05 Javascript
vue2.0 兄弟组件(平级)通讯的实现代码
Jan 15 Javascript
js 数组详细操作方法及解析合集
Jun 01 Javascript
微信小程序实现折叠与展开文章功能
Jun 12 Javascript
vue中选项卡点击切换且能滑动切换功能的实现代码
Nov 25 Javascript
js的继承方法小结(prototype、call、apply)(推荐)
Apr 17 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 Sql Server连接失败问题及解决办法
2009/08/07 PHP
PHP 多维数组排序(usort,uasort)
2010/06/30 PHP
PHPMailer邮件发送的实现代码
2013/05/04 PHP
深入理解PHP中的Session和Cookie
2013/06/21 PHP
基于PHP+Ajax实现表单验证的详解
2013/06/25 PHP
PHP修改session_id示例代码
2014/01/08 PHP
PHP对文件进行加锁、解锁实例
2015/01/23 PHP
php插入排序法实现数组排序实例
2015/02/16 PHP
PHP性能分析工具XHProf安装使用教程
2015/05/13 PHP
PHP getID3类的使用方法学习笔记【附getID3源码下载】
2019/10/18 PHP
jquery 指南/入门基础
2007/11/30 Javascript
最佳JS代码编写的14条技巧
2011/01/09 Javascript
Web跨浏览器进程通信(Web跨域)
2013/04/17 Javascript
jquery中post方法用法实例
2014/10/21 Javascript
不使用ajax实现无刷新提交表单
2014/12/21 Javascript
javascript实现画不相交的圆
2015/04/07 Javascript
Node.js实现文件上传
2016/07/05 Javascript
详解Vue生命周期的示例
2017/03/10 Javascript
element-ui的回调函数Events的用法详解
2018/10/16 Javascript
vue实现鼠标移入移出事件代码实例
2019/03/27 Javascript
vue-cli3项目升级到vue-cli4 的方法总结
2020/03/19 Javascript
[38:39]完美世界DOTA2联赛循环赛 IO vs GXR BO2第二场 11.04
2020/11/05 DOTA
python解析xml文件实例分享
2013/12/04 Python
Python实现将16进制字符串转化为ascii字符的方法分析
2017/07/21 Python
Sanic框架蓝图用法实例分析
2018/07/17 Python
python读取大文件越来越慢的原因与解决
2019/08/08 Python
详解如何在cmd命令窗口中搭建简单的python开发环境
2019/08/29 Python
Pytorch 数据加载与数据预处理方式
2019/12/31 Python
python实现逆滤波与维纳滤波示例
2020/02/26 Python
python 穷举指定长度的密码例子
2020/04/02 Python
html5 touch事件实现触屏页面上下滑动(一)
2016/03/10 HTML / CSS
美国隐形眼镜零售商:LensPure
2019/03/10 全球购物
参观监狱心得体会
2014/01/02 职场文书
城管执法人员纪律作风整顿思想汇报
2014/09/13 职场文书
三八红旗手事迹材料
2014/12/26 职场文书
职场领导同事生日简短祝福语
2019/08/06 职场文书