私のアプリケーションでは、特定のモジュールで変更が発生した場合、他のいくつかのモジュールに通知する必要があるというシナリオがあります。変更が発生するモジュールをサブジェクトとして保持し、通知されるモジュールをオブザーバーとして保持することにより、オブザーバー パターンがここに適合すると考えました。
しかし、オブザーバー パターンの原則に従うと、オブザーバーは互いに独立しています。オブザーバー間に接続があってはなりません。私の場合、モジュールは異なりますが、依存しています。最初のモジュールの実行が正常に完了することは、次のモジュールを実行するために重要です。また、モジュール x が失敗した場合、モジュール 1 によってモジュール x-1 に対して行われたすべての変更を元に戻す必要があります。つまり、すべてのモジュールが正常に実行されるか、以前の状態にロールバックする必要があります。トランザクションのように想像できます。それから、オブザーバー パターンがこれを実装する正しい方法ではないことが間違っていることに気付きました。
ここでは、主題の変更が発生したときに処理する必要があるモジュールのセットがありますが、制約により、モジュールは互いに依存しています。誰かがこの問題を解決して、良いデザインを考え出すのを手伝ってくれませんか?