代理模式

定义:

代理模式为另一对象提供一个替身或占位符,以便控制对这个对象的访问。

类图:

应用:

1.虚拟代理,控制访问创建开销大的资源

  • 实现图片预加载:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    var image = (function() {
    var img = document.createElement('img');
    document.body.appendChild(img);

    return {
    setSrc: function(src) {
    img.src = src;
    }
    }
    })();

    // 代理
    var proxyImage = (function() {
    var img = new Image();
    img.onload = function() {
    image.setSrc(this.src);
    };

    return {
    setSrc: function(src) {
    image.setSrc('loading.gif');
    img.src = src;
    }
    }
    })();

    // 调用
    proxyImage.setSrc('logo.png');

2.保护代理,基于权限控制对资源的访问

3.远程代理,控制远程访问对象