设计模式

3.代理模式
代理模式 当一个对象无法直接引用另外一个对象时 我们通过创造一个代理对象 来完成代理
代理对象可以完全解决被代理对象与外界对象之间的耦合

通过一个科学家操纵机器狗的例子来理解代理模式
    var Dog = function(name){
        this.name = name;
    };

    Dog.prototype.getSay = function() {
        return this.name;
    };
    // 添加了一个otherThing 当在进行其他行为时 不能进行getSay方法
    Dog.prototype.otherThing = function() {
        var curTime = new Date().getHours();
        return  curTime >= 20 ? that.getSay() : '"睡觉时间!"';

    }

    // 定义机器对象 - 代理对象
    var robot = {
        doSay: function(dog) {
            scientist.doSay(dog.getSay())
        }
    };

    // 定义科学家对象
    var scientist = {
        doSay: function(name) {
            console.log('my name is' + name);
        }
    };

    robot.doSay(new Dog('Goofy')); // "买到了一双高跟鞋"
可以看出 代理对象也实现了被代理对象的某些方法 这样子保护被代理对象 增加了开销

代理模式的应用 有时候会用到缓存方面,比如图片的加载
先加载一个默认图,等正真的原图被加载好时再展示出来,这样子增加界面的友好性
代理模式还是在解决系统内部的耦合性问题


design      PS3 Games

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!