2012-03-19 8 views
5

モデルビュープレゼンター(MVP)のパターンに従って、自分のアプリケーションでプロジェクト管理システムを開発しようとしています。私の質問は、MVPという数多くの例を見てきましたが、1つのプレゼンターと複数のビューでは見たことがありません。たとえば、ユーザーがプロジェクトを開いたときに、同じプロジェクトデータがツリービュー、データグリッド、およびチャートで表示されます。どのように私はそれに対処しますか?複数のビューと1人のプレゼンターによるWinform MVP

答えて

2

コードをデカップリングして保守しやすくするため、非常によく似ていても各ビューのプレゼンターを1つ用意することをお勧めします。各ビューには独自のプレゼンテーションロジックがあります。 複数のビューで同じデータを表示する必要がある場合は、プレゼンター間でビューモデルを共有できますが、再びプレゼンターごとに異なるビューモデルを使用することをお勧めします(非常に似ている場合でも)

+0

コードの重複があっても、そのように進む方が良いと思います。関連するすべてのビューを更新するためにオブザーバーパターンも使用しますか? – Dimitris

+0

ページがまったく同じだが、それぞれに1つのラベルが表示されている場合は、1つのプレゼンター、1つのモデル、1つのビューを作成できます。プレゼンターは正しいUIを表示するためのロジックを含みます。 鉱山は一般的な回答です –

2

あなたがやる方法は、インターフェイスの背後に配置してビューを抽象化し、プレゼンタをビューの具体的な実装に結びつけることです。

私はあなたが現実の世界でそれをやりたいとは思っていません。グラフとツリービューを比較することの違いは、ビューインターフェイスで物事を一般化し、契約を実現するために多くの面倒なコードを表示することになります。

プレゼンターの視聴率を1:1に保つことをお勧めします。同じデータに複数のビューを表示する場合は、プレゼンター間で共有するモデルが異なるため、同じデータをさまざまな方法で表示します。

1

ほとんどの場合、ビューインスタンスごとに1つのプレゼンターインスタンスが必要です。

CustomerViewとCustomerViewPresenterを開くとします。これはそれぞれの1つのインスタンスです。

別のCustomerViewと別のCustomerViewPresenterインスタンスを開きます。それはそれぞれ2つのインスタンスです。

これは、特定のプレゼンターが常に同じビューを使用する必要があるわけではありませんが、実際はそうではありません。発表者は、1つのビューインターフェイスに話す必要があります。あなたはテストのためのモックビューのための実際のビューを交換することができるはずです。

関連する問題