Android MVP:インタラクターとは?
質問
インターアクターとは何ですか?MVPデザインにどのように適合するのでしょうか?インタラクタを使用する利点/欠点と、インタラクタのコードをプレゼンターに入れる利点/欠点は何ですか?
どのように解決するのですか?
この記事を書いている時点(2016年)で、多くのプロジェクトはMVCパターンの悪いバージョンを使って書かれています。Activity/Fragment/Controllerのコード行数が多すぎるのです。この問題は、一般に神アクティビティと呼ばれています。この問題を解決するために、クラスをモデル、ビュー、プレゼンターに分離するMVPが人気を集めています。
しかし、MVPだけでは十分ではなく、InteractorやRepositoryのパターンも出てきています。
インターアクターとは何でしょうか?MVP設計の中でどのように適合するのでしょうか?
インタラクターは、モデルを作成、読み込み、更新、削除(CRUD)するためのユーティリティクラスと考えることができます。インタラクターは、データベース、ウェブサービス、またはその他のデータソースから、リポジトリからデータを取得します。 インターアクターは、モデルを取得するためのquot;動詞;またはquot;アクション;です。
- GetUser
- プロファイルの更新
- ステータスの削除
- などなど。
データを取得した後、インタラクターはそのデータをプレゼンターに送ります。プレゼンターは、いつ、どのようにそのモデルを使ってUIに変更を加えるかを決定します。
インタラクタを使うということは、ビジネスロジックを切り離すということです。
インタラクタを使うということは、ビジネスロジックを切り離すということであり、コードは再利用可能で、よりシンプルで、テストしやすいものになります。
<ブロッククオートインタラクタを使うのと、インタラクタのコードをプレゼンターに入れるのとでは、どのようなメリット/デメリットがあるのでしょうか?
例えば、コードが単純で、別のクラスに抽出する必要がないと確信がある場合、プレゼンターにインタラクタのコード("interactor code")を置くことができます。しかし、interactor を使用することにした場合、interactor は他のプレゼンターで再利用することができます。
リポジトリについてはどうですか?
リポジトリは、データベースへの接続のようなCRUD操作の実装の詳細を担当するクラスです。
リポジトリは、モデルを取得するための実装の詳細を含みます。
class UserRepository {
fun connectToDb() {}
fun getUser(): User {}
}
これをData Sourceと呼ぶ人もいますが、私はこの用語は互換性があると考えています。
更新(2021年)しました。 MVP+Interactorはまだ使えるのに。Android Jetpackを使ったMVVMパターンが、Googleに好まれるUIパターンです。
関連
-
無効なメソッド宣言
-
Java Notes 005_この行に複数のマーカーがある - キーを変数に解決できない - シンタックスエラー、ins
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] Java で、あるコンストラクタを別のコンストラクタから呼び出すにはどうすればよいですか?
-
[解決済み] MVPとMVC、その違いは何ですか?
-
[解決済み] Androidの「コンテキスト」とは何ですか?
-
[解決済み] Java内部クラスと静的ネストされたクラス
-
[解決済み] Could not find or load main class "とはどういう意味ですか?
-
[解決済み】「px」、「dip」、「dp」、「sp」の違いは?
-
[解決済み】Android UserManager.isUserAGoat()の正しい使用例?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
型に解決できない エラー解決
-
メモ帳でJavaプログラムをコンパイルして実行すると、Could not find or load main class ...というエラーが表示される。解決方法
-
Solve モジュールのビルドに失敗しました。Error: ENOENT: no such file or directory エラー
-
StringBuilderが投げるArrayIndexOutOfBoundsExceptionの探索
-
が 'X-Frame-Options' を 'sameorigin' に設定したため、フレーム内に存在する。
-
BindException: アドレスはすでに使用中です:バインドエラー解決
-
SocketException java.netの4つの例外解決策。
-
SpringBoot 起動エラー java.nio.charset.MalformedInputException: 入力長 = 2 解決
-
XXX型を囲むインスタンスがJavaでアクセスできない
-
Junitのユニットテストエラー