《JavaScript设计模式与开发实践》之代理模式

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

保护代理: 控制不同权限的对象对目标对象的访问;

虚拟代理: 把一些开销很大的代理,延迟到真正需要它的时候才去创建;

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

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

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

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

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


Demo:下面重点讲一下 JS 中常用的虚拟代理

用途:

  1. 图片预加载;
  2. 虚拟代理合并 HTTP 请求;
  3. 虚拟代理在惰性加载中应用。

栗子(图片预加载):

var myImage = (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(){
 myImage.setSrc( this.src );
 }
 return {
 setSrc: function( src ){
 myImage.setSrc( 'file:// /C:/Users/svenzeng/Desktop/loading.gif' );
 img.src = src;
 }
 }
})();
proxyImage.setSrc( 'http:// imgcache.qq.com/music/photo/k/000GGDys0yA0Nk.jpg' ); 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,148评论 1 32
  • javascript设计模式与开发实践 设计模式 每个设计模式我们需要从三点问题入手: 定义 作用 用法与实现 单...
    穿牛仔裤的蚊子阅读 4,284评论 0 13
  • 定义   代理模式是为一个对象提供一个占位符,以便控制对它的访问。 描述   代理模式是一种非常有意义的模式,在生...
    小小的开发人员阅读 362评论 0 1
  • feisky云计算、虚拟化与Linux技术笔记posts - 1014, comments - 298, trac...
    不排版阅读 3,938评论 0 5
  • 第二部分 自动内存管理机制 第二章 java内存异常与内存溢出异常 运行数据区域 程序计数器:当前线程所执行的字节...
    小明oh阅读 1,214评论 0 2