发布订阅模式

观察者模式

观察者模式定义了对象间的一种一对多的依赖关系,当一个对象的状态发生改时,所有依赖于它的 对象的都会得到通知,并且会自动更新,它其实就是观察者和被观察者之间的通信
观察者模式有一个别名叫做 发布订阅模式,就像你订阅了一份报纸,其他人也订阅了和你一样的报纸,当报社发布报纸时,订阅了这个报纸的人就能得到新报纸了

发布订阅模式

上面说过,发布订阅模式是观察者模式的一个别称,但 发布订阅 模式现在也越来越强大,组件独立于观察者模式了
在现在的 发布订阅 模式中,发布者的消息不会直接传给订阅者,它们之间有一个第三方,由这个第三方将消息 传给订阅者
在这里插入图片描述

观察者模式: 观察者(Observer)直接订阅(Subscribe)主题(Subject),而当主题被激活的时候,会触发(Fire Event)观察者里的事件。
发布订阅模式: 订阅者(Subscriber)把自己想订阅的事件注册(Subscribe)到调度中心(Topic),当发布者(Publisher)发布该事件(Publish topic)到调度中心,也就是该事件触发时,由调度中心统一调度(Fire Event)订阅者注册到调度中心的处理代码。

发布订阅模式只是一种模式,具体的实现还是要我们自己根据实际情况去编写代码

const  shop = {}; // 首先定义一个商铺

shop.list = [];  // 定义商铺里的商品信息列表

shop.listen = function(fn) { // 添加订阅者
    this.list.push(fn); // 将订阅的商品添加进入商品心里列表
}  

shop.sell = function(){  //发布者
    for( var i = 0, fn; fn = this.list[ i++ ]; ){
        fn.apply( this, arguments ); // (2) // arguments 是发布消息参数
    }
}

// 这是来了一个顾客询问手机的价格,那么
shop.listen(function(iphone, price) {
    console.log('手机型号' + iphone);
    console.log('价格' + price)
})

// 发布消息,本店卖IphoneX, 价格7000
shop.sell('IphoneX', 7000);

shop.sell('Iphone11', 9000);

// 输出 手机型号IphoneX, 价格7000
// 输出 手机型号Iphone11, 价格9000
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值