摘要:代理模式分类很多应用场景也很多本文主要讲述在开发中最常用的虚拟代理和缓存代理。虚拟代理虚拟代理实现图片预加载将职责拆分符合面向对象的单一职责原则。
代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。
代理模式分类很多,应用场景也很多,本文主要讲述在js开发中最常用的虚拟代理和缓存代理。
虚拟代理 虚拟代理实现图片预加载var realImg=(function () { var imgNode=document.createElement("img"); document.body.appendChild(imgNode); return { setSrc:function (src) { imgNode.src=src; } } })(); var proxyImage=(function () { var img=new Image; img.onload=function () { realImg.setSrc(this.src); } return { setSrc:function (src) { realImg.setSrc("loading.gif"); img.src=src; } } })(); proxyImage.setSrc("big.png");
将职责拆分,符合面向对象的单一职责原则。但是通常我们会将预加载和设置图片src逻辑都放到realImg中(demo),但是这样做违反设计模式的基本原则,以后网速快了,可能就不需要预加载,需要修改较多代码,维护性不好。
虚拟代理合并http请求这个在web版本toList中或者文件列表勾选自动保存可以应用,防止手速过快频繁请求,节省带宽,前提是这些http接口具有一致性。
var synchronousFile=function (id) { console.log("开始同步文件,id为 "+id); } var proxySynchronousFile=(function () { var cache=[],//保存待合并发送请求的id timer; return function (id) { cache.push(id); if(timer){ return; } timer=setTimeout(function () { synchronousFile(cache.join(",")); clearTimeout(timer); timer=null; cache.length=0;//按时间段重新初始化 },2000) } })(); var chkboxs=document.getElementsByTagName("input"); for(var i=0,len=chkboxs.length;i缓存代理 缓存代理进行计算 var mult=function () { var tmp=1; for(var i=0;i适应一些开销大,重复步骤较多的场景。一定要结合具体业务场景分析,进行调优,上面其实也只是演示而已。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/81767.html
摘要:下面总结了它俩的异同相同点都需要实现同一个接口或者继承同一个抽象类,并且代理角色和装饰角色都持有被代理角色和构件角色的引用。 写完上一篇之后有小伙伴问我有没有写过代理模式,想看看我的理解。原本我的设计模式系列是按照创建型-行为型-结构型的顺序写下去的,既然小伙伴诚心诚意了,我就大发慈悲的穿插一篇代理模式。开玩笑,题外话。 说起代理模式,就不由得想起经纪人,说起经纪人,就想起了...对,...
摘要:简介代理模式和装饰者模式是两种常见的设计模式。这里通过构造函数的参数将被代理对象传入到代理中,也可以通过其它方式,如提供一个方法。下面是的代码输出首先依然是先创建一个需要被代理的对象,然后把它传入到的构造函数中。 简介 代理模式和装饰者模式是两种常见的设计模式。代理模式是为其它对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以...
摘要:代理设计模式代理模式为其他对象提供一种代理以控制对这个对象的访问。代理模式是常见的设计模式之一是指不直接调用实际的对象,而是通过代理对象,来间接的调用实际的对象。对象类定义了代理对象所代表的目标对象。 代理设计模式 代理模式:为其他对象提供一种代理以控制对这个对象的访问。代理模式是常见的设计模式之一,是指不直接调用实际的对象,而是通过代理对象,来间接的调用实际的对象。为什么要采用这种间...
阅读 2904·2023-04-25 21:23
阅读 2996·2021-09-22 15:24
阅读 837·2019-08-30 12:55
阅读 2078·2019-08-29 18:42
阅读 2570·2019-08-29 16:27
阅读 886·2019-08-26 17:40
阅读 2154·2019-08-26 13:29
阅读 2584·2019-08-26 11:45