0

Web 上に存在する MVC アプリケーションでは、ビューとコントローラーの間に線を引くのは簡単です。ビューはユーザーにデータを表示しますが、コントローラーは入力を収集し、提供された入力に基づいてユーザーをビューにルーティングします。しかし、ステートフル (デスクトップなど) アプリケーションでは、操作間の境界が Web アプリケーションほど明確ではないため、どこに線を引くべきかを知るのは少し難しくなります。では、どこに線を引けばよいのでしょうか。

たとえば、ユーザーがアイテムをグリッドに配置できるビューをアプリケーションに持っています。現在、ビュー自体に「アイテムをグリッドに配置する」コードがあります (グリッド モデルにアクセスして実際の配置を行います)。しかし、それをコントローラーに入れ、必要な情報をビューからコントローラーに渡すこともできます。どちらも明確な選択ではないようです。コードをビューに配置すると、最終的にビューが肥大化します。アイテムを配置するだけでなく、ユーザーが実行できる操作が多数あるためです。しかし、これをコントローラに配置すると、追加レベルの間接化のように見え、コードを追跡するのが難しくなります。

それとも、私はこれについてすべて間違っていますか?これは WinForms アプリです。私の「ビュー」は実際にはフォームであり、フォームはその性質上、入力を受け取り、情報を表示することができます。では、区別は無意味ですか?または、ビューをフォームから分離する必要がありますか? それとも、MVC パターンは WinForms と完全に互換性がないのでしょうか?

4

1 に答える 1

0

MVC は関心の分離です。これは、プログラマーが 2 つの領域の詳細を別々に保つのに役立つように設計されています。MODEL と VIEW は、オブジェクトのコレクション/グループです。

VIEW 内の各オブジェクトは、BUTTON、WINDOW、TEXTAREA などのクラス セットの一部である場合があります。

MODEL 内の各オブジェクトには、CUSTOMER_DETAILS、ADDRESS、POSTCODE などのドメインに対応するタイプがあります。

CONTROLLER オブジェクトは、VIEW オブジェクトがシステムとの通信に使用する MODEL オブジェクトへのインターフェイスを提供します。CONTROLLER には、MODEL オブジェクトに格納できない可能性がある機能が含まれている場合もあります。

従来の MVC では、VIEW オブジェクトが CONTROLLER をバイパスして MODEL オブジェクトと直接対話することもできますが、お勧めしません。

すべてのオブジェクトは OO の原則に準拠しており、完全で完全に機能するオブジェクトです。

于 2012-12-04T23:41:20.867 に答える