2009-06-17 22 views
0

MVPまたはMVCデザインパターンの後に問題があります(いずれかに適用)。モデルレイヤーからユーザー入力をきちんとプロンプトする方法を理解できませんか?モデルの特定の値に応じて、プロセスの途中でユーザーに入力を促す必要があるかもしれません。モデルレイヤーからのユーザー入力の取得

たとえば、仮想PO入力プロセスを行います。ユーザーがビュー内のボタンを押すと、ビューからPOの詳細を渡すプレゼンターを呼び出します。発表者はモデルを呼び出して、新しいPOを検証してPOのコレクションに挿入します。モデルの検証チェックの1つは、別の購買発注が同じ明細でまだ入力されていないことを確認することです。もしあれば、アプリはPOが重複していないことを確認するようにユーザに促す必要があります。アプリは現在、モデルの中に入っています。ビューに戻ってオペレータ入力を取得し、モデル入力コードに戻りPO入力プロセスを終了するにはどうすればよいですか?

答えて

0

paper I read on presenter firstでは、プレゼンターがモデルとビューに依存し、モデルとビューの両方のイベントにサブスクライブしていることが示唆されました。
これは、処理を続行できない時点でモデルからイベントを発生させる可能性があることを意味します。プレゼンターは、ビュー上で何らかのメソッドを呼び出すことによって、モデルからイベントを処理します(ユーザーにプロンプ​​トを表示します)。モデルのメソッドからの戻り値はモデルに返されます(.NETで使用されるEventArgumentsサブクラスのようなイベントへのin/outパラメータ)。

0

モデルとUIパターンの他のコンポーネントとの間の通知のやりとりのいくつかの形式を調べることができます。

Martin Fowlerが書きましたhere

モデルの奥深くで、ユーザーの入力を受けてから、モデルに戻っていれば、そうしないでください。コントローラはモデルの変更を担当しており、モデルを変更する前に検証を行う必要があります。これにより、検証コードを更新コードから分離する必要があります。

+0

コントローラーレイヤーのロジックを検証してモデルにヒットさせ、それがモデルにヒットした場合は更新できますか?私がレイヤーを理解する方法は、その唯一の責任はビューを更新することです。すべてのアプリケーションロジックはモデル内に存在します。 MVPパターンとMVCパターンの違いの1つは多分でしょうか? コントローラーレイヤーは次のようなことができます。 if model.NewPOIsValid(PO)Then Model.AddPO(PO) End if –

関連する問題