モデルビュープレゼンター(MVP)のパターンに従って、自分のアプリケーションでプロジェクト管理システムを開発しようとしています。私の質問は、MVPという数多くの例を見てきましたが、1つのプレゼンターと複数のビューでは見たことがありません。たとえば、ユーザーがプロジェクトを開いたときに、同じプロジェクトデータがツリービュー、データグリッド、およびチャートで表示されます。どのように私はそれに対処しますか?複数のビューと1人のプレゼンターによるWinform MVP
5
A
答えて
2
コードをデカップリングして保守しやすくするため、非常によく似ていても各ビューのプレゼンターを1つ用意することをお勧めします。各ビューには独自のプレゼンテーションロジックがあります。 複数のビューで同じデータを表示する必要がある場合は、プレゼンター間でビューモデルを共有できますが、再びプレゼンターごとに異なるビューモデルを使用することをお勧めします(非常に似ている場合でも)
2
あなたがやる方法は、インターフェイスの背後に配置してビューを抽象化し、プレゼンタをビューの具体的な実装に結びつけることです。
私はあなたが現実の世界でそれをやりたいとは思っていません。グラフとツリービューを比較することの違いは、ビューインターフェイスで物事を一般化し、契約を実現するために多くの面倒なコードを表示することになります。
プレゼンターの視聴率を1:1に保つことをお勧めします。同じデータに複数のビューを表示する場合は、プレゼンター間で共有するモデルが異なるため、同じデータをさまざまな方法で表示します。
1
ほとんどの場合、ビューインスタンスごとに1つのプレゼンターインスタンスが必要です。
CustomerViewとCustomerViewPresenterを開くとします。これはそれぞれの1つのインスタンスです。
別のCustomerViewと別のCustomerViewPresenterインスタンスを開きます。それはそれぞれ2つのインスタンスです。
これは、特定のプレゼンターが常に同じビューを使用する必要があるわけではありませんが、実際はそうではありません。発表者は、1つのビューインターフェイスに話す必要があります。あなたはテストのためのモックビューのための実際のビューを交換することができるはずです。
関連する問題
- 1. アンドロイドMVP - 複数モデルのプレゼンター
- 2. MVPパターン:ビューをプレゼンターにマッピング
- 3. GWT-Platformグローバルプレゼンター1人に複数のネストされたプレゼンター
- 4. MVP:プレゼンター
- 5. Android Mvp、プレゼンター
- 6. プレゼンター(MVP)のコンボボックスを更新
- 7. MVPのプレゼンターの間で通信する
- 8. MVPで抽象モデル用のビューとプレゼンターを作成する方法
- 9. ViewPagerフラグメント(MVP)のプレゼンターを回復する
- 10. MVPプレゼンターのコンテキストを注入する
- 11. GWTのMVP。複雑なビュー
- 12. AndroidアプリのMVP - プレゼンターの状態
- 13. ViewPagerプレゼンターのライフサイクルを持つAndroid MVP
- 14. C#winforms mvpプレゼンターの子フォームを表示
- 15. を注入既存のMVPプレゼンターDagger2
- 16. Windows.Forms - プレゼンターでMVPを使用する
- 17. MVP with GWTP:プレゼンターが外れている
- 18. MVPは複数のプレゼンターから状態を受信していますか?
- 19. GWT MVPの歴史1は、ユーザのアクション/イベントに基づいてビューをレンダリングする複数のプレゼンターを持ってGWTアプリケーションでイベント
- 20. GWT DecoratedTabPanelの複合ビュー/プレゼンターを実装する方法は?
- 21. Android MVP - プレゼンターからビューへの文字列リソースの受け渡し
- 22. 1人のプロデューサーと複数のコンシューマー
- 23. MVPパターン。 GWTのTabPanelで複数のビューを使用する
- 24. どのように渡すかアクティビティからプレゼンター(MVP)へのデータをリストする
- 25. 複数のモデルと1つのビュー
- 26. Dagger2:プレゼンターにApiモジュールを挿入する(MVP)
- 27. 1人から複数人の子供を1人で更新する
- 28. Railsのビューのように、ヘルパーやプレゼンターの内部で複数のレンダリングを使用する方法
- 29. このフラグメントはMVPにプレゼンターを持つことができますか?
- 30. 1人のシェフクライアント複数のシェフサーバー
コードの重複があっても、そのように進む方が良いと思います。関連するすべてのビューを更新するためにオブザーバーパターンも使用しますか? – Dimitris
ページがまったく同じだが、それぞれに1つのラベルが表示されている場合は、1つのプレゼンター、1つのモデル、1つのビューを作成できます。プレゼンターは正しいUIを表示するためのロジックを含みます。 鉱山は一般的な回答です –