6

プレゼンターの役割を活動から切り離すことで、どのような利点が得られるでしょうか。

活動をプレゼンターから分析するために分離できる役割/懸念は何ですか?

なぜそれらを2つの異なる懸念に分けたいのですか?

どのような状況で、それらを統合しないことが理にかなっていますか?

例、賛否両論を挙げてください。

4

2 に答える 2

7

プレゼンターをアクティビティから切り離す主な理由は 2 つあります。それは、再利用性とテスト容易性です。

再利用性の実際の使用例:ドキュメントにリンクできる、写真家、著作権、撮影日などのプロパティを持つイラスト エンティティがあります。の凡例は、ドキュメントとイラストの関係にあります。イラストと凡例の両方を独自の画面で編集できますが、イラストは凡例画面からも編集できるようにしたいと考えていました。そこで、イラスト画面のプレゼンターを作りました。illustration アクティビティはそのプレゼンターの非常に薄いラッパーであり、legend アクティビティはもう少し複雑ですが、プレゼンターとビューを再利用します。アクティビティの責任は、 を提供しRequestContext、実行することですfire()(保存/キャンセル ボタンは、Google グループのアクションと同様に、別のアクティビティにあります)。

再利用性のための仮想ユースケース:

  • さまざまなフォーム ファクターの場合、同じ画面に集約したり、独自の画面 (マスター/詳細など) に分けたりする必要があります。それらを集約する場合、2 つのアクティビティを持つことは理想的ではない場合があります。電話フォーム ファクタでシン アクティビティを使用すると、タブレットまたはデスクトップ フォーム ファクタの単一のアクティビティ内でコンポーネント(プレゼンター/ビュー)を再利用できます。
  • 異なるプラットフォームで同じプレゼンターを再利用する: Android アプリと Web アプリ (さらにはjava2objcを介した iOS アプリ) で同じプレゼンターを使用する可能性があり、ビューはネイティブの Android ビューまたは GWT ベースのビューであり、ナビゲーションは、GWT のアクティビティや場所ではなく、Android のアクティビティやフラグメントによって処理されます。

テスト容易性について(これは理論上のことです)、アクティビティ ライフサイクルの手間をかけずにプレゼンターをテストし (ビューをモックする)、ライフサイクルを個別にテストできます (プレゼンターを正しく初期化してクリーンアップし、データをフェッチ/キャッシュし、プレゼンターを嘲笑するなど)。

のコミット メッセージも参照してください。
今日。外から見ると、それらはあなたが望むように構成できる単なるウィジェットです。内部では MVP を使用しているため、必要なくテストできますGWTTestCase

于 2013-03-09T12:34:07.690 に答える
0

まず最初に、これまでで最も長い調査に私を駆り立てた質問に感謝します。:)

トモス・ブロイヤーによると、こちら

アクティビティは、プレゼンターができるウィジェットと話すことはできません。

主な懸念事項は次の 2 つです。

1- データをウィジェットに入れる: このデザインをどのように改善できますか?

Server (RequestFactory) ---> Activity ---> WidgetPresenter ---> Widget

ここでRequestFactoryは にデータを渡し、Activityはそれを に渡し、次に は に渡しPresenter ますwidget

widgets2- からへのデータの取得server

widget ---> WidgetPresenter ---> Activity ---> Server(RequestFactory) 
于 2013-03-09T08:54:54.137 に答える