AndroidアプリをMVPを使用するようにリファクタリングしています。2つのフラグメントを持つアクティビティがあります。
シナリオ1(1人のプレゼンター):プレゼンターは各ビューを「知っています」。したがって、1つのビューが入力を受け取ると、プレゼンターメソッドが呼び出され、任意のビューのメソッドを呼び出すことができます。
シナリオ2(3人のプレゼンター):各プレゼンターは自分のビューと他のプレゼンターしか知りません。それはそれが知っている他のプレゼンターまたはそれ自身の見解に対してのみメソッドを呼び出します。
これは1つのアクティビティのみを対象としており、アクティビティ間の通信は対象としていません。
MVPを使用する方法はどれですか、それともユースケースに依存しますか?
編集:最初のシナリオで説明した構造を使用する傾向があります。それは私にとって最も理にかなっています。私の唯一の問題は、これが適切なMVPであるのか、自分で何か新しいものを作成しているのかわからないことです(これは望ましくありません)。
プレゼンターを相互に依存させることは、正しく聞こえません。依存関係は、1組のビューとプレゼンターを機能させるためにすべてのビューとすべてのプレゼンターが必要になるようなものです。
プレゼンター同士を独立させた方がいいと思います。すべてのプレゼンターが使用できる別のレイヤーにすべての共通機能を配置できます。
Androidアプリ)でのMVPモデルの大まかな理解から、単純なアプリは次のコンポーネントで構成されています。
複数のビューで構成され、各ビューに対応するプレゼンターが存在するアプリがある場合、次のアーキテクチャをお勧めします。
PresenterCommonは、個々のプレゼンターから独立していることを意図しています。既知の抽象インターフェースを使用してプレゼンターと通信できますが、特定のプレゼンターNに固有のことは何も知らないはずです。一方、プレゼンターNは、PresenterCommonを認識しており、直接呼び出すことができます。それに。 Presenter Nは、ある時点でPresenterCommonに登録する必要があります。
ビューのいずれかによるモデルへの変更は、抽象Presenterインターフェースを使用してPresenterCommonによって他のビューアーに通知されます。