MVPAFAIKは、すべてがで行われなければならないということについては何もありませんPresenter。Presenters複数に共通するロジックを1つの共通クラス にカプセル化することは理にかなっています。
MVP石で書かれたルールというよりはむしろパターンです。したがって、それが理にかなっている場合は、パターンから少し逸脱することができます。
私見共通クラスは正しいアプローチです。
バックエンドへのリクエストを処理するために共通のクラスを使用すると、たとえばキャッシュや認証を簡単に実装することもできます。
あなたPresentersと共通のクラスの間のコミュニケーションを行うには2つの方法があります:
Presenters共通クラスのシングルトンインスタンスを、データを必要とするすべてのものに注入します。プレゼンターから、共通クラスのメソッドを呼び出して、コールバックを登録できます。
- グローバル
EventBusを共通クラスに注入し、対応するクラスからEvent(ie LoadDataEvent)を起動し、PresentersこれEventを共通クラスで処理します。Eventデータがバックエンドから受信されると、共通クラスから別の(つまり)を起動DataLoadedEventし、対応するで処理できPresentersます。
解決策1 はおそらく実装が簡単ですが、共通クラスとPresenter(依存性注入を使用する場合はそれほど悪くはありません)の間にある程度の結合があります。
ソリューション2には、もう少しコードが必要です(イベントを定義する必要があります)が、多くの柔軟性と分離を提供します。たとえばPresenter、データにも関心のある新しいものを作成する場合DataLoadedEventは、プレゼンターにハンドラーを登録するだけで完了です。