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