在实现中使用数据库时,观察者模式和Pub-sub相同



我试图理解观察者模式并卡在一个特定点。在我的理解中,一旦观察者订阅以在任何事件更改上通知它们,则将订阅存储在某个地方,然后当事件更改时,通知订户。

在实际情况下,由于持久原因,我应该将值存储在数据库或文件中,并在事件发生后通过从DB获取并循环浏览列表。

这是正确的理解吗?我没有看到任何涉及数据库的示例,但是,每个示例都使用列表。

又一次出版商/订户模式也相似,除了更改,没有确切了解出版商和订户是谁,而MQ或某种类型的中级技术则用于在两个之间建立通信。

我的问题是:当我们在观察者模式中使用DB时,它不会成为发布者/订阅者(除了在这里了解观察者和发布者)。它正确理解吗?

在大多数观察者模式的示例中,您会看到使用列表,但该列表的初始化如何取决于您的应用程序。例如,与您的情况一样,具有大量订户的应用程序必须出于持久原因存储这些订户。我们不能指望如此大量的订户一直在内存中。因此,观察者列表仅从DB中初始化,尽管并非所有条目都可以。这完全是一个不同的讨论。

其次,仅通过使用DB,观察者模式和Pub-Sub模式就不会变得相似。即使使用DB,您也只是简单地初始化要通知的观察者列表。之间没有经纪人可以保持主题的身份,并使观察者隐藏在主题类别中。这是很好的文章,可以很好地解释:https://hackernoon.com/observer-vs-pub-sub-pattern-50d3b27f838c

最新更新