美文网首页
观察者模式&&订阅发布模式

观察者模式&&订阅发布模式

作者: 慕尼黑凌晨四点 | 来源:发表于2020-12-03 20:44 被阅读0次

    观察者模式&&订阅发布模式

    参考:知乎-观察者模式 vs 发布订阅模式

    观察者模式

    image-20201203201203357.png

    原理:其实就是在Subject类中维护了一个Observer的队列。

    调用 Subject.订阅(mObserver)方法就是把该mObserver放入队列中。

    当Subject中发生变化时,遍历Observer队列,依次调用Observer的收到通知方法。

    即完成了观察者模式。

    这里有个纠结的地方困扰了我好久:明明是Observer观察者(比如用户、人)订阅Subject(比如报刊、公众号),代码里却要写成 Subject.订阅(mObserver)。很绕??

    这里这么想:

    虽然是你订阅了报刊,实际上报刊在 <u>订阅者列表</u> 中把你加了进去。核心操作是由被观察者 Subject 做的!!!

    你关注了一个公众号,实际是你把你的ID告诉了公众号,让公众号每次更新的时候告诉你一声。核心是公众号,即被观察者

    所以是Subject.订阅(mObserver)

    发布/订阅模式

    一开始以为两个模式是一样的。后来才发现还是有区别的:

    image-20201203202856572.png

    严格来说,这种才是发布/订阅模式

    Publisher内部不直接维护一堆Subscribers,而是转交给经纪人Broker来维护。

    这样才算真正解耦了,发布者和订阅者彼此都不知道彼此的存在,很干净。

    相关文章

      网友评论

          本文标题:观察者模式&&订阅发布模式

          本文链接:https://www.haomeiwen.com/subject/qvsvwktx.html