2

現時点では、Model-View-Presenter パターンを理解しようとしています。ユーザー インターフェイス (ビュー) があり、その上にいくつかのコントロールがあるとします。コントロールの状態を保存するオプションをユーザーに提供したいと思います (たとえば、ウィンドウ サイズ、選択したタブ、DataGridView 列のサイズなど)。

「Settings」モデルを作成すると、「dgvColumnSize1」、「WindowsSize」などのプロパティが作成されます。しかし、モデルはビューを認識し、そのために特別に設計されています。

それらを切り離すにはどうすればよいですか?

4

2 に答える 2

2

プロパティは、モデルが特定のビューに直接結合されているのではなく、それらのプロパティを持つビューに直接結合されていないという意味で分離されています...しかし、私はあなたの意味を理解しています。

使用できるアプローチは 2 つあります。

不透明な状態

ビューは、その状態をモデルに格納できる不透明な状態オブジェクトにパッケージ化します。次にビューは、状態オブジェクトからその状態をパッケージ化およびアンパッケージ化し、それに応じて変更する責任があります。不透明な方法でプロパティを格納するために使用できるオブジェクトの例には、辞書、ExpandoObject、および JSON/XML 文字列が含まれます。

MVP 階層

アーキテクチャ パターンの Model-View-X ファミリーは、一番下の MV-X のビューが次のラインのモデルである階層に設定できます。通常、階層には 2 つまたは 3 つの連鎖した MV-X が必要です。

DAL 層として機能するオプションの下部 MVC、ビジネス層として機能するオプションの中間 MVC、および上部のアプリケーションのさまざまなユーザー/マシン インターフェイス用の MVP のセット。

最下位の MVC アーキテクチャはプレゼンテーション層に完全に依存しませんが、最上位の MVP はプレゼンテーション層に合わせて調整されています。

最上位の MVP は、プレゼンテーション レイヤーの状態を最下位のレイヤーに永続化するためにどのように渡すのでしょうか? もちろん、なぜ不透明なオブジェクトを使用するのでしょう!

ちなみに、このセットアップが Microsoft の WPF で使用される MVVM パターンのように聞こえる場合、それはそのためです。MVVM は、MVP パターンを少し変更しただけで、まったく別のパターンと呼ぶことができます。

于 2013-01-17T00:06:18.997 に答える
0

ビューによって実装されるインターフェースには、プレゼンターが読み取ることができるこれらの量を表すプロパティが必要です。次に、プレゼンターはそれらを読み取り、設定オブジェクトに保存できます。

Presenterを起動すると、Settingsオブジェクトをフェッチし、値をビューにコピーして戻すことができます。

于 2013-01-16T23:14:57.463 に答える