订阅者发布者模式与观察者模式的区别

简单总结一下 订阅者发布者模式:网上很多篇相关文章了啊,真的有必要写这篇幅只有几句话的水笔吗,你这混蛋不会是想让这寥寥数笔的博客显得不那么难看吧!
(清嗓)言归正传,js常见的设计模式之一的订阅者发布者模式,订阅者们订阅着他们想听的消息,当发布者发布相关消息时 订阅者就能收到消息 与其说订阅者发布者
我比较喜欢说回调函数、循环触发某一类的回调函数数组(我不希望听别人讲抽象术语),在代码实现上来讲可能更直接一点(不过嘛);我打算卖包子,并且规定客人预定时,需要说类型和要做的事(声明一个对象)
有人预定要红豆沙馅的(往对象添加一个key为红豆沙馅,value为[]数组则装一些客人会对红豆沙这类包子做的事 ps:什么!你说红豆沙包除了吃还能怎么样)
客人们纷纷预订下单,我感到很欣慰,于是我开始归类下单的类型,把客人对相同的馅要做的事归类(大概数据会变成

 {
redBean:[callBack1(),callBack2()],
yellowBean:[callBack3(),callBack4()],
}

这相当于是在addEventListener里注册的事件监听了:如click),我的手艺炉火纯青 终于这时候第一个包子出炉了,我对外发布一条消息:我做出的是红豆沙包,并且送一包番茄酱(是的你不喜欢吃也没办法送你其他)相关的客人
请就位,排队完成约定要做的事(不要问我一个包子怎么够这么多人吃;这应该就是发布者发布消息,订阅者收到消息;代码上就是取出该类型的回调函数数组,循环触发调用,顺便回调函数的参数应该是"包子和番茄酱")

更新---------
最近看到观察者模式与发布者订阅者存在区别,在网上文档也很多啊,他们的基本实现思想是相同的,只是写法上会有区别(后续举个栗子),前者与后者在叫法上 观察者=>订阅者,目标=>发布者,
从这个叫法上,很明确就知道主角是谁,观察者是大哥啊,而上述订阅发布者模式,明显发布者的戏份就不多,以观察者的身份展开的故事应该是这样的:
我今天想喝豆浆(是的 喝豆浆就等于没吃早餐),我走到店里坐下后一会就有豆浆给你端来(没有什么下不下单的,因为淳朴,区别就是
享受大哥的待遇啊,话不多说,吃就完了,我得先有"吃"这个方法,目标店里 在循环遍历大哥时,就指定触发"吃"这个方法 ps:给人感觉这家店好像不太火的亚子)
不知道大家有没有体会到区别呢

posted @ 2020-06-18 15:47  zzhenxiang  阅读(204)  评论(0编辑  收藏  举报