Javascript 观察者模式

一、实现观察者模式需要三个对象

1、观察者,主要寄宿在发行商对象上,一般不会单独使用

2、发行商,用于发布消息的对象

3、订阅者,接收通知的对象

二、观察者对象应该具有的方法和属性

  1.由回调函数构成的订阅者数组

  2.用于添加和删除订阅者的addSubscriber()和removeSubscriber()方法。

  3.publish()方法,发布消息

  4.make()方法,将任意对象转变为一个发行商并为其添加上述方法(即,将观察者寄宿在发行商)

var observer = {
    addSubscriber: function (callback) {
        this.subscribers[this.subscribers.length] = callback;
    },
    removeSubscriber: function (callback) {
        for (var i = 0; i < this.subscribers.length; i++) {
            if (this.subscribers[i] === callback) {
                delete (this.subscribers[i]);
            }
        }
    },
    publish: function (what) {
        for (var i = 0; i < this.subscribers.length; i++) {
            if (typeof this.subscribers[i] === 'function') {
                this.subscribers[i](what);
            }
        }
    },
    make: function (o) {
        for (var i in this) {
            o[i] = this[i];
            o.subscribers = [];
        }
    }
}

三、发行商 (任意一个对象)

var blogger = {
    writeBlogPost: function () {
        var content = 'Today is ' + new Date();
        this.publish(content);
    }
};
observer.make(blogger);

四、观察者

var jack = {
    read: function (what) {
        console.log("I read " + what);
    }
};
var bill = {
    read: function (what) {
        Console.log("bill read" + what);
    }
};

blogger.addSubscriber(jack.read);
blogger.addSubscriber(bill.read);

五、发布消息

blogger.writeBlogPost();
//取消订阅
//blogger.removeSubscriber(bill.read);

 

posted @ 2016-09-21 16:08  lwn6  阅读(156)  评论(0编辑  收藏  举报
什么是幸福?天天在做自己想做的事情,家人、同事、朋友、客户、网友都和和睦睦,身体健康、钱包鼓鼓、女朋友天天开心、生活无忧无虑就是最大的幸福