3

ボタンクリック、行ダブルクリック、その他のイベントの処理。より良いアプローチは何ですか?

ビューへのプレゼンターの直接アクセス。したがって、ビューはプレゼンターの適切なメソッドを直接呼び出すことができます。Presenter.Save()

または

インターフェイスのイベント。

interface ILoginDetailView:
{
   event EventHandler Save;        
}

意見

private void btnSave_Click(object sender, EventArgs e)
{
   Save(this, null)
}

プレゼンター

view.Save += new EventHandler(view_Save);

プレゼンターからビューを切り離すので、2番目のアプローチの方が優れていると思います。しかし、パターンが説明されているすべての記事/論文では、最初のアプローチが使用されています。

4

4 に答える 4

3

個人的には、私は常に2番目のアプローチを採用しています。一般的に、私はプレゼンターについてビューに知らせるのは好きではありません。デカップリングは大きな利点です。そうでなければ、ビューから特定の変数を取得する関数を作成していることに気付きます。イベントパターンはそれをうまく破ります。

于 2012-09-11T16:17:17.717 に答える
2

また、2番目のアプローチを使用します。これは、あなたが述べたように、ビューをプレゼンターから切り離し、それによってそのようなものをテスト可能にするためです。

于 2012-09-11T15:53:12.817 に答える
2

MVPVM(モデルビュープレゼンタービューモデル)パターンでは、ビューは通常、ビューに緊密に結合されていると述べられています。これにより、ビューモデル、ビュー、およびビジネス/データアクセスレイヤーを分離したままにすることができます。

したがって、もう一度、プレゼンターは、ビューモデルまたはビューに責任を追加することなく、ビューに直接アクセスできるようにすることができます。

MVPVMデザインパターン

これは素晴らしい記事であり、MVC、MVP、MVVM、およびMVPVMについて非常によく説明しています。

于 2013-07-19T04:16:49.873 に答える
1

最初のアプローチの方がはるかにクリーンだと思います。

保存はイベントのようには感じられません。それは直接行動です。

MVVMではビューモデルでコマンドを呼び出し、MVCではコントローラーでアクションを呼び出し、MVPではプレゼンターでメソッドを呼び出します。

保存または保存はイベントですが、保存はありません。

しかし、それはおそらく個人的な好みについての質問です。

于 2012-09-11T16:17:38.730 に答える