美文网首页字节前端
观察者模式和发布订阅模式的区别

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

作者: moofyu | 来源:发表于2020-03-11 14:33 被阅读0次

    观察者模式(Observer Pattern)

    • 定义了对象之间的一对多依赖,当一个对象改变时,它的所有依赖都会收到通知(notify)并自动更新
    • 是观察者(Observer)和被观察者(Subject 或Observable)之间的通讯。
    • Subject维护一套Observer的集合,当Subject 改变时,通知Observer
    • 观察者和被观察者,是松耦合(loosely coupled)的关系
    • 别名 :“订阅-发布模式”


      观察者模式

    发布者-订阅者模式 (Pub-Sub Pattern)

    • 发布者不直接通知订阅者,而是通过第三者,也就是在消息队列里面,我们常说的经纪人Broker
    • 发布者只需告诉Broker,我要发的消息,topic是AAA;
      订阅者只需告诉Broker,我要订阅topic是AAA的消息;
      于是,当Broker收到发布者发过来消息,并且topic是AAA时,就会把消息推送给订阅了topic是AAA的订阅者。当然也有可能是订阅者自己过来拉取,看具体实现。

    • 完全解耦的
    发布者-订阅者

    总结

    简而言之,这两种模式之间的主要区别可以如下所示:

    1. 在Observer模式中,Observers知道Subject,同时Subject还保留了Observers的记录。然而,在发布者/订阅者中,发布者和订阅者不需要彼此了解。他们只是在消息队列或代理的帮助下进行通信。
    2. 在Publisher / Subscriber模式中,组件是松散耦合的,而不是Observer模式。
    3. 观察者模式主要以同步方式实现,即当某些事件发生时,Subject调用其所有观察者的适当方法。发布者/订阅者在大多情况下是异步方式(使用消息队列)。
    4. 观察者模式需要在单个应用程序地址空间中实现。另一方面,发布者/订阅者模式更像是跨应用程序模式。

    相关文章

      网友评论

        本文标题:观察者模式和发布订阅模式的区别

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