3、代理模式

代理模式

代理模式是为一个对象提供一个代用品或占位符,以便控制对它的访问。

保护代理和虚拟代理

  • 保护代理:代理B可以帮助A过滤掉一些请求

  • 虚拟代理:把一些开销很大的对象,延迟到真正需要它的时候采取创建

虚拟代理的应用

  • 图片预加载

  • 虚拟代理合并HTTP请求(防抖节流???)

缓存代理

缓存代理可以为一些开销大的运算结果提供暂时的存储,在下次运算时候,如果传递进来的参数跟之前一致,则可以直接返回前面的存储的运算结果。

 var proxyMult = (function(){
   var cache = {}
   return function(){
     var args = Array.prototype.join.call(arguments,',')
     if(args in cache){
       return cache[args]
     }
     return cache[args] = mult.apply(this,arguments)
   }
 })()
 proxyMult(1,2,3,4) // 输出:24
 proxyMult(1,2,3,4) // 输出: 24

缓存代理可用于ajax请求缓存数据

用高阶函数动态创建代理p101

其他代理

  • 防火墙代理:控制网络资源的访问,保护主机不让“坏人”接近

  • 远程代理:为一个对象在不同的地址空间提供局部代理,在Java中,远程代理可以是另一个虚拟机中的对象。

  • 保护代理:用于对象应该有不同访问权限的情况。

  • 智能引用代理:取代了简单地指针,它在访问对象时执行一些附加操作,比如计算一个对象被引用的次数

  • 写时复制代理:通常用于复制一个庞大对象的情况。写时复制代理延迟了复制的过程,当对象真正被修改时候,才对它进行复制操作。写时复制代理是虚拟代理的一种变体,DLL(操作系统中的动态链接库)是其典型运算场景。

JavaScript中最常用的是虚拟代理和缓存代理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值