0

GUI を備えたサーバー アプリケーションがあります。C# で書かれています。ここで、アプリケーション全体に MVC パターンを使用したいと考えています。

通常、1 つのモデル、1 つのコントローラー、およびおそらく n 個のビューがあります。わかりました、私はすべての 1 つを持っていますが、モデルについてはよくわかりません。

私の状況: 1 つのサーバー状態があり、オンライン/オフラインにすることができ、クライアント数などがあります。これは私の「ServerModel」である可能性があります。ネットワーク ライブラリを介してネットワーク接続を処理し、接続されている場合は学生オブジェクトを作成します。それがすべてここで起こります。このビューは、新しい生徒がいる場合に通知され、新しい生徒用の GUI 要素が (コントローラーを介して) 表示されます。今、私のビューには特別な生徒に関連するアクションがあり、コントローラーは通知「StudentChanged」を受け取り、変更された生徒を取得します。

質問: コントローラーは、生徒を直接変更するか、ServerModel に生徒の変更方法を伝えることができるようになりました。2 番目の方法は一見やり過ぎのように見えますが、MVC の設計を明確にしています。コントローラーから生徒を直接変更したいです。しかし、この MVC 違反 (学生はモデルではなく、モデルの一部) が後の開発やコード全体の柔軟性に何らかの欠点をもたらすかどうかはわかりません。

ハンブルグからのご挨拶 ;)

4

2 に答える 2

1

コントローラーは、ユーザーが学生に関して変更したい情報を収集し、それをビューに渡す必要があります。

コマンド パターンを使用して、学生を変更するために必要なアクションをまとめてみるとよいでしょう。

例えば

  1. ユーザーは、学生を変更したい UI でアクションを実行します。
  2. UI は、ユーザーがインターフェイスを介して学生を変更したいことをビューに通知します。
  3. View は ChangeStudent CommandObject を実行します
  4. CommandObject は、アプリケーションの起動時に UI によって View に登録された Change Student UI を表示します。
  5. ユーザーは Change Student UI を操作します。ユーザーが完了すると、コマンドは情報を取得します。
  6. このコマンドはモデルを変更し、ChangeStudent UI を閉じます。
  7. コマンドは、完了したことをビューに通知しました。
  8. ビューは、コマンドが完了したことを UI に伝えます。
  9. UI が更新されます。
于 2009-04-03T13:03:19.630 に答える
0

経験則: モデルをシンプルに保ち、コントローラーにその仕事をさせます。

于 2009-04-02T19:52:30.857 に答える