代理模式-- JavaScript设计模式与开发实践

334 阅读2分钟

基本含义

代理模式时为一个对象提供一个代用品或占位符,以便控制对他的访问。 关键在于当直接访问一个对象不满足需求的时候,提供一个替身对象来控制对该对象的访问。替身对象对请求进行处理后再将请求转交给本体对象。

保护代理和虚拟代理

保护代理:代理对象进行拒绝访问,而本体对象不会拒绝请求。控制不同权限对木匾对象的访问。 虚拟代理:把一些开销很大的对象,延迟到真正需要的时候进行创建。

由于JavaScript无法判断传入对象,本次主要介绍虚拟代理。

使用

单一职责原则

一个类(对象或者函数),应该仅有一个引起它变化的原因。如果一个对象承担了多项职责,就意味着这个对象将变得巨大,引起它变化的职责过多。

本人最近就经历了弹窗一个文件中包含所有表格组件,表单组件以及所有state,整个组件变得臃肿务必,700行的代码不是本人难以阅读。所以建议将300行以上可分文件的组件进行封装和函数抽离。这种耦合会导致脆弱和低耦合。

代理图片进行设置loading图片。

image.png

缓存代理高阶函数工厂

image.png

其他例子

  • 防火墙代理: 控制网络资源的访问,保护主机不让坏人靠近。
  • 远程代理:为一个对象在不同的地址空间提供局部代表,在java中,远程代理可以是一个远程虚拟机的对象。
  • 保护代理:用于对象应该有不同的访问权限。
  • 智能引用代理:取代简单指针,他在访问对象时执行额外操作。例如计算被引用次数。
  • 写时复制代理:用于复制一个庞大的对象时,当对象被真正修改的时候,才对对象进行复制操作。