私はMVPパターンを使用してアプリケーションを設計していますが、システムのEdgeケースのいくつかは、複数のプレゼンター間の通信に依存しています。
View 1
はPresenter 1
を呼び出し、Operation A
はResult X
を返します。
View 2
、View 3
、View 4
はすべてResult X
に関心があります。それぞれにそれぞれのプレゼンターがあり、それぞれOperation A
を実行してResult X
を取得できます。
このアプリケーションには、他のビューとプレゼンターを効果的に格納するMainView
とMainPresenter
があります。
解決策の1つは、Presenter 1
、Presenter 2
、Presenter 3
、およびPresenter 4
のMainPresenter
参照を提供することでした。そして、Operation A
の結果を得て、他のプレゼンターを呼び出します。
もう1つは、他のプレゼンターへの参照を保持し、他の呼び出しを容易にするFacade
レイヤーを実装することでした。
この状況にどのように対処しましたか?
私の経験では、ユーザーインターフェイスの複数の場所で結果が必要な場合、これを計算する方法はユニバーサルビジネスルールであるため、そのルールには単一のプレゼンターで実装されているビジネスがないことがわかります。代わりに、ドメインモデルの一部です。その時点では、発表者間のコミュニケーションは必要ありません。ただし、発表者全員が同じドメインモデルを参照している場合を除きます。