0

私は観察者のパターンを理解しようとしていて、ある特定の点で立ち往生しています。私の理解では、観察者がイベントの変更を通知するために加入すると、サブスクリプションはどこかに格納され、イベントが変更されるとサブスクライバに通知されます。データベースが実装で使用される場合、Observerパターンとpub-subは同じですか?

実際のシナリオでは、永続性の理由からデータベースまたはファイルに値を格納し、DBから取得してリストをループすることでイベントが発生したときにその値を通知する必要があります。

この正しい理解はありますか?私はデータベースを含む例は見ませんが、すべての例でlistを使用しています。

パブリッシャとサブスクライバのパターンは、パブリッシャとサブスクライバが誰であるか、MQなどの中間テクノロジや何らかの並べ替えを使用して2者間の通信を確立するという正確な知識がないという点を除いて同様です。

私の質問は、オブザーバーパターンでDBを使用すると、パブリッシャー/サブスクライバーになりません(ここではオブザーバーとパブリッシャーの知識があります)。それは正しい理解ですか?

答えて

0

Observerパターンのほとんどの例では、使用リストが表示されますが、そのリストがどのように初期化されるかはアプリケーションによって異なります。たとえば、膨大な数のサブスクライバを持つアプリケーションでは、これらのサブスクライバを永続性の理由で格納する必要があります。そのような多数の加入者がいつも記憶に残ることは期待できません。したがって、オブザーバーのリストは、DBからのみ初期化されますが、すべてのエントリーが1つになるわけではありません。これは全く別の議論です。

第2に、単にDBを使用するだけで、オブザーバパターンとパブサブパターンは似ていません。 DBを使用しても、単に通知されるオブザーバーのリストを初期化するだけです。その間にはサブジェクトのアイデンティティを保持し、サブジェクトクラスからオブザーバーを隠しておくブローカーは存在しません。ここでうまく説明できる良い記事です: https://hackernoon.com/observer-vs-pub-sub-pattern-50d3b27f838c

関連する問題