代理模式

代理模式

原理

  为一个对象提供一个代用品或占位符,以便控制对它的访问。(替身对象对用户的请求做出一些处理后再把请求转发给本体对象)

保护代理

  用于对象应该有不同访问权限的情况

虚拟代理

  需要代理者帮用户做一些请求(有时自己的一些请求的代价非常高,频繁的请求会造成性能问题,虚拟代理把一些开销很大的对象,延迟到真正需要它的时候才去创建

前两者的对比

  保护代理用于控制不同权限的对象对目标对象的访问,但在JavaScript 并不容易实现保护代理,因为我们无法判断谁访问了某个对象。而虚拟代理是最常用的一种代理模式

缓存代理

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

虚拟代理中的惰性

  用高阶函数动态创建代理:通过传入高阶函数这种更加灵活的方式,可以为各种计算方法创建缓存代理。现在这些计算方法被当作参数传入一个专门用于创建缓存代理的工厂中, 这样一来,我们就可以为乘法、加法、减法等创建缓存代理.

防火墙代理

  控制网络资源的访问,保护主题不让“坏人”接近

远程代理

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

智能引用代理

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

写时复制代理

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


  转载请注明: 迷一样的自信 代理模式

 上一篇
策略模式 策略模式
策略模式原理  定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换 用途  根据实际的场景,运用对应的策略 组成 策略类 => 封装了具体的算法,并负责具体的计算过程 环境类 => Context 接受客户的请求,
2018-06-08
下一篇 
单例模式 单例模式
单例模式原理  判断是否有这个实例,没有就创建,有就返回它的实例 用途  在整个过程中只需要一个对象,并提供全局的访问 /** * 非透明的单例 * @describe: 没有显示的new,使用者并不知道这是一个类 */ functi
2018-06-06
  目录