1

WindowsフォームアプリでMVPパターンを使用しています。ビューのラジオボタンを変更する必要があります。ビューでブール型のプロパティを公開することでこれを行うことができますが、代わりにイベントを使用してビューを操作する必要がありますか?

4

3 に答える 3

5

それは、純粋さと実用性の問題です...そして、ちょっとした個人的なスタイルの問題です. 重要ではありません...イベントは通常の方法よりも作業が多いだけですが、より分離されています。 個人的に

  • ビューを分離したり、プレゼンターを意識したりしないようにしたいので、ビューはイベントを発生させることでプレゼンターと通信します。これにより、ビューがプレゼンターへの参照を持つ必要がなくなります。ビューを薄くて愚かに保ちます。
  • 一方、プレゼンターは通常、ビュー (およびモデル) へのメンバー参照を持っています。したがって、インターフェイスを介してメソッド呼び出しを行うことにより、ビューと対話できます(IView インターフェイスに準拠している限り、ビューを置き換えることができます)。たとえば、あなたの場合、 Set_X_Option(eOptionEnum) は、プレゼンターが適切に呼び出すことができる IView インターフェイスのメンバーになります。

ただし、この IView 依存関係 (プレゼンターはインスタンス化してプラグインする必要がある IView への参照を持っています) を削除することもできます。上記のスキームは私を失敗させたことはありません...まだ。

于 2008-10-29T07:28:55.877 に答える
2

「平易な言葉」の分析を使用して、「ラジオ ボタンが表示されるかどうかはビューのプロパティである」と言うので、実際のプロパティを使用してこれをビューに伝えます。

もう 1 つの (技術的な) 可能性は、Presenter でイベントを発生させることです。つまりRadioButtonVisibilityChanged、View によってリッスンされ、新しい可視性が を介して渡されますEventArgs。これは、ビューがプレゼンターから独立していて無知であることに反するため、MVP パターンを弱体化させます。私はそのようなナンセンスに反対することをお勧めします。

于 2008-10-29T07:23:34.657 に答える
1

通常、コントローラーはプロパティを介してビューを変更し、ビューによって発生したイベントをサブスクライブして、変更を認識します。Asp.NET では基本的に Windows フォームと同じように動作しますが、 MVPの良い例を次に示します。

于 2008-10-29T07:30:21.100 に答える