javascript设计模式(三)-代理模式(读书笔记)

最近在研读曾探大佬的著作《JavaScript设计模式与开发实践》——代理模式,并做了如下读书笔记总结和个人理解。

代理模式

定义:为一个对象提供一个代用品或占位符,以便控制对它的访问。
代理模式关键:当客户不方便直接访问一个对象或者不满足需要的时候,提供一个替身对象来控制对这个对象的访问,客户实际上访问的是替身对象。替身对象对请求做出一些处理之后,再把请求转交给本体对象。
保护代理

  • 通俗来讲,如果用户想要追求A,并想送花给A,他没有直接用给A,而是通过B的手去把花送给A。这样B就可以过滤掉一些请求,如送花的人年龄大或者没有宝马。这种请求直接在代理B处被拒绝掉,叫做保护代理。

虚拟代理

  • 通俗来讲,如果用户想要追求A,并想送花给A,他没有直接用给A,而是通过B的手去把花送给A。B会选择在A心情好的时候再送花,这样成功的概率就增大了。这种代理模式就是虚拟代理,它会把一些开销很大的对象,延迟到真正需要它的时候才去创建。

虚拟代理实现图片预加载

背景:在Web开发中,如果直接给某个img标签节点设置src属性,由于图片过大或者网络不佳,图片的位置往往有段时间会是一片空白。常见的做法就是先用一张loading图片占位,然后用异步的方式加载图片,等图片加载好了再把它填充到img节点里,该场景就很适合使用虚拟代理。

其他代理模式

防火墙代理:控制网络资源的访问,保护主题不让“坏人”接近。
远程代理:为一个对象在不同的地址空间提供局部代表,在Java中,远程代理可以是另一个虚拟机中的对象。
保护代理:用于对象应该有不同访问权限的情况。
智能引用代理:取代了简单的指针,它在访问对象时执行一些附加操作,比如计算一个对象被引用的次数。
写时复制代理:通常用于复制一个庞大对象的情况。写时复制代理延迟了复制的过程,当对象被真正修改时,才对它进行复制操作。写时复制代理是虚拟代理的一种变体,DLL(操作系统中的动态链接库)是其典型运行场景。

参考文章:JavaScript设计模式与开发实践

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值