プレゼンターはMVPパターンでGUIロジックを実行しますか?

私たちはMVPパターンを使って作業しています。私はGUIアクションに対処する方法が不思議でした。

例えば、ユーザがグリッドから行を削除したい場合、ユーザは削除ボタンを押す。この時点で、次の2つのことができます。

1) _presenter.DeleteRow()を呼び出すと、プレゼンターは _view.SelectedRow を呼び出します。プレゼンターは view.AskUserForConfirmation()を呼び出し、 DialogResult.OK を返すと、プレゼンターは実際にはそのオブジェクトを削除し、グリッドを更新します。

DialogResult OK の場合、 presenter.Delete(myObject)はOR presenter.Delete()が呼び出され、 Delete メソッド内でオブジェクトは _view.SelectedRow を呼び出して取得されます。

あなたはどのようにこのような状況に対処していますか?

10

2 答え

MVPパターンは、ロジック、ビュー、およびデータへのアクセスを分離することになっています。ですから、どこに行かなければならないのかを判断しようとするときに、あなたがしようとしていることに実際のビジネスロジックがあるかどうかを尋ねてください。

あなたのビジネス層にポップアップウィンドウを表示するロジックを持たせたいですか?おそらくそうではありません。それは単なる確認メッセージです。あなたのスタイルポップアップウィンドウを生成するヘルパークラスを用意したいかもしれませんが、これはPresenterレイヤーとは別のものです。

4
追加された

オプション2確認を求めるのは、発表者が心配する必要がないUIの責任です。実際に何かをモデルにするときまで、あるいは複雑なビジネスロジックを呼び出す必要が生じるまで、プレゼンターは関与しません。

これは、オプション1が無効であることを意味するものではありません。私の意見では、不必要なビュー/プレゼンターのチャタリングを作成するだけです。

2
追加された