观察者模式和发布/订阅模式

观察者模式和发布/订阅模式

前言

观察者模式和发布/订阅模式很像,其区别主要在于,发布/订阅模式中发布者与订阅者双方没有感知。两者的区别可以抽象地理解租房子。观察者模式是自己找房东,两个人协商好生意就达成了。发布/订阅模式则是房东将租房信息挂在中介方,租房者也可以把自己的租房需求告知中介方。交易由中介方来促成。

观察者模式

var subject = {
        observers: [],
        notify() {
            this.observers.forEach(observer =>{
                observer.update()
            })
        },
        attach (observer) {
            this.observers.push(observer)
        }
    }
    var observer = {
        update(){
            alert('updated')
        }
    };
    subject.attach(observer);
    subject.notify();
  1. 主体自行添加观察项;
  2. 主体自行发送通知。

发布/订阅模式

var subject = {
        subscribes: [],
        publish() {
            this.subscribes.forEach(subscribe =>{
                subscribe.update();
            })
        },
        subscribe(sub) {
            this.subscribes.push(sub)
        }
    };
    var publisher = {
        publish(subject) {
            subject.publish()
        }
    };
    var subscriber = {
        update() {
            console.log('update')
        },
        subscribe(subject) {
            subject.subscribe(this);
        }
    }
    subscriber.subscribe(subject)
    publisher.publish(subject)
  1. subject 作为一个公共平台,提供订阅功能和发布功能;
  2. subscriber 订阅者自行订阅;
  3. publisher 发布者自行发布。
发布了252 篇原创文章 · 获赞 2360 · 访问量 14万+

猜你喜欢

转载自blog.csdn.net/weixin_44135121/article/details/103225089