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 原型和继承(Prototypes and Inheritance)
Apr 01 Javascript
轻轻松松学JS调试(不下载任何工具)
Apr 14 Javascript
自制基于jQuery的智能提示插件一枚
Feb 18 Javascript
兼容Firefox的Javascript XSLT 处理XML文件
Dec 31 Javascript
jQuery实用技巧必备(中)
Nov 03 Javascript
jQuery点击改变class并toggle及toggleClass()方法定义用法
Dec 11 Javascript
gulp加批处理(.bat)实现ng多应用一键自动化构建
Feb 16 Javascript
javascript+html5+css3自定义弹出窗口效果
Oct 26 Javascript
判断div滑动到底部的scroll实例代码
Nov 15 Javascript
利用angular自动编译andriod APK的绕坑经历分享
Mar 08 Javascript
微信小程序封装分享与分销功能过程解析
Aug 13 Javascript
layui.use模块外部使用其内部定义的js封装函数方法
Sep 16 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设计模式 Adapter(适配器模式)
2011/06/26 PHP
PHP中模拟链表和链表的基本操作示例
2016/02/27 PHP
再谈javascript图片预加载技术(详细演示)
2011/03/12 Javascript
在Node.js中实现文件复制的方法和实例
2014/06/05 Javascript
JavaScript DOM节点添加示例
2014/07/16 Javascript
javascript实现控制文字大中小显示
2015/04/28 Javascript
PhotoSwipe异步动态加载图片方法
2016/08/25 Javascript
开源免费天气预报接口API及全国所有地区代码(国家气象局提供)
2016/12/26 Javascript
微信小程序 PHP后端form表单提交实例详解
2017/01/12 Javascript
JavaScript模块化之使用requireJS按需加载
2017/04/12 Javascript
Javascript网页抢红包外挂实现分享
2018/01/11 Javascript
详解Require.js与Sea.js的区别
2018/08/05 Javascript
vue组件中watch props根据v-if动态判断并挂载DOM的问题
2019/05/12 Javascript
jquery.tagsinput.js实现记录checkbox勾选的顺序
2019/09/21 jQuery
vue excel上传预览和table内容下载到excel文件中
2019/12/10 Javascript
electron踩坑之remote of undefined的解决
2020/10/06 Javascript
[48:31]DOTA2-DPC中国联赛 正赛 Dynasty vs XG BO3 第一场 2月2日
2021/03/11 DOTA
python实现根据窗口标题调用窗口的方法
2015/03/13 Python
浅谈终端直接执行py文件,不需要python命令
2017/01/23 Python
python socket 聊天室实例代码详解
2019/11/14 Python
class类在python中获取金融数据的实例方法
2020/12/10 Python
使用CSS3代码绘制可爱的Hello Kitty猫
2016/08/03 HTML / CSS
CSS3弹性盒模型开发笔记(三)
2016/04/26 HTML / CSS
HTML5 Canvas锯齿图代码实例
2014/04/10 HTML / CSS
Myprotein比利时官方网站:欧洲第一运动营养品牌
2020/10/04 全球购物
乌克兰珠宝大卖场:Zlato.ua
2020/09/27 全球购物
大四自我鉴定范文
2013/10/06 职场文书
英文版餐饮运营管理求职信
2013/11/06 职场文书
售后服务科岗位职责范文
2013/11/13 职场文书
安全生产实施方案
2014/02/23 职场文书
做一个有道德的人演讲稿
2014/05/14 职场文书
中药学专业求职信
2014/05/31 职场文书
大一新生检讨书
2014/10/29 职场文书
2015年护士工作总结范文
2015/03/31 职场文书
2016年过年放假安排通知
2015/08/18 职场文书
2016大学生社会实践单位评语
2015/12/01 职场文书