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 相关文章推荐
40款非常棒的jQuery 插件和制作教程(系列二)
Nov 02 Javascript
根据选择不同的下拉值出现相对应的文本输入框
Aug 01 Javascript
javascript中cookie对象用法实例分析
Jan 30 Javascript
通过JS和PHP两种方法判断用户请求时使用的浏览器类型
Sep 01 Javascript
JS 拼凑字符串的简单实例
Sep 02 Javascript
微信小程序 wx:key详细介绍
Oct 28 Javascript
详解vue模拟加载更多功能(数据追加)
Jun 23 Javascript
js学习心得_一个简单的动画库封装tween.js
Jul 14 Javascript
node中Express 动态设置端口的方法
Aug 04 Javascript
javascript帧动画(实例讲解)
Sep 02 Javascript
Express结合Webpack的全栈自动刷新
May 23 Javascript
js调用网络摄像头的方法
Dec 05 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
星际争霸秘籍
2020/03/04 星际争霸
用PHP连mysql和oracle数据库性能比较
2006/10/09 PHP
解析PHP中DIRECTORY_SEPARATOR,PATH_SEPARATOR两个常量的作用
2013/06/21 PHP
PHP解析html类库simple_html_dom的转码bug
2014/05/22 PHP
TP5框架使用QueryList采集框架爬小说操作示例
2020/03/26 PHP
jQuery结合HTML5制作的爱心树表白动画
2015/02/01 Javascript
AngularJS基础 ng-mouseleave 指令详解
2016/08/02 Javascript
Node.js connect ECONNREFUSED错误解决办法
2016/09/15 Javascript
Vue-Router进阶之滚动行为详解
2017/09/13 Javascript
Java设计中的Builder模式的介绍
2018/03/22 Javascript
在vue-cli搭建的项目中增加后台mock接口的方法
2018/04/26 Javascript
JS合并两个数组的3种方法详解
2019/10/24 Javascript
JS实现单张或多张图片持续无缝滚动的示例代码
2020/05/10 Javascript
Vue 请求传公共参数的操作
2020/07/31 Javascript
python写的ARP攻击代码实例
2014/06/04 Python
Python bsddb模块操作Berkeley DB数据库介绍
2015/04/08 Python
详解Django通用视图中的函数包装
2015/07/21 Python
Python的Flask框架及Nginx实现静态文件访问限制功能
2016/06/27 Python
Python开发微信公众平台的方法详解【基于weixin-knife】
2017/07/08 Python
Python matplotlib绘图可视化知识点整理(小结)
2018/03/16 Python
python如何把嵌套列表转变成普通列表
2018/03/20 Python
解决python 3 urllib 没有 urlencode 属性的问题
2019/08/22 Python
Python + Flask 实现简单的验证码系统
2019/10/01 Python
python 实现图片裁剪小工具
2021/02/02 Python
CSS3实现div从下往上滑入滑出效果示例
2020/04/28 HTML / CSS
WINDOWS域的具体实现方式是什么
2014/02/20 面试题
机电专业毕业生推荐信
2013/11/10 职场文书
母亲七十大寿答谢词
2014/01/18 职场文书
高二地理教学反思
2014/01/24 职场文书
行政工作个人的自我评价
2014/02/13 职场文书
捐助倡议书范文
2014/04/15 职场文书
2014年冬季防火方案
2014/05/21 职场文书
旅游与酒店管理专业求职信
2014/07/21 职场文书
社区党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
pytorch中[..., 0]的用法说明
2021/05/20 Python
Python实现天气查询软件
2021/06/07 Python