私は正直なところ、Androidに関するこのMVPや類似のものの周りに頭を浮かべることはできません。その本当のポイントは何ですか?Android MVP:テストを有効にするのは単なる言い訳ですか?
これまで、AndroidでMVPを使用する唯一の実用的な理由は、フレームワーククラス(アクティビティ、サービス、フラグメントなど)からユニットテスト可能なコードを抽出することでした。不可能)をテストする。
アクティビティ(および他のフレームワーククラス)は可能な場合(つまり、フレームワークにとらわれないコードを処理する場合)、プレゼンターに仕事を委任させ、そうでない場合は直接作業を行います。このため、プレゼンターは、アクティビティのライフサイクルを反映するメソッド(onStart、onResume、clickListeners ...)を持つことによって、何とか気が進まないように見えます。これがコードのにおいであるのだろうか?
これに加えて、MVP Androidアプリを構築するためのライブラリやパターンがたくさんありますが、実際には自分のプレゼンターを手動で作成して管理することの欠点は何ですか? アクティビティとプレゼンターのデカップリングは、プレゼンターがアクティビティからのコードを単に抽出するだけであるため、定義によって密接に結合されています。プレゼンタにはプレゼンテーションロジックのみが含まれています(ビジネスロジックの残りの部分は、View/Presenterのデュオについて何も知らない専用クラスに入ります)。
私はこのトピックで少し失われていると感じています。私は、より大きな視点を得るために、この問題についていくつかの意見をしたいと思います。
に直面していない場合は、MVPを進める必要がありますテスト - それは読みやすく、維持し、再利用することも容易です。したがって、テストは良いコードを書くことから得られる特別なメリットです。 –
テストは、MVPパターンのもう一つの美徳です。分離されたPresenterを使用すると、アプリケーションが他の世界とどのようにやりとりしているか(どのような記憶装置であれ、どんな通信であろうと)、アプリケーションがユーザーとやりとりすること間の相互作用をはっきりと切り離すことができます(アクティビティの表示、単にビープ音)。 –
Presenterでのアクティビティライフサイクルメソッドの複製は、パターンを使用する最良の方法ではない可能性があります.Presenterは、必ずしもAndroidアクティビティではなく、どのビューでも操作できるはずです。 Viewがコンソールであることを想像してみてください。それはPresenter上で 'onStart()'を呼び出すのに意味がありますか? – Egor