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

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

前言

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

观察者模式

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 发布者自行发布。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值