3

私は最近、MVC について StackoverFlow で質問しました: Can the MVC Design Pattern / Architecture pattern can be used in Desktop Application Development?

提供された回答に基づいて、これを Windows フォーム アプリケーションに実装する方法について調査を開始しました。次の CodeProject の記事に出くわしました: http://www.codeproject.com/KB/cs/model_view_controller.aspx

記事の下のコメントで、特定のユーザーは (これは良い記事ですが) 実際にはオブザーバー パターンであると主張しています。最初の、しかしそれほど重要ではない質問は、誰かがそれに同意するか、反対するか、そしてその理由は何かということです。

2 番目のより重要な質問について: 私は .NET で小さなタスク リスト プログラムを作成しようとしています。それは非常に小さく、できれば高速です。一般的に、そのようなプロジェクトにとってより良いアーキテクチャは何でしょうか? オブザーバー パターンまたは MVC パターン? それとも別のパターン?

ありがとうございました

4

3 に答える 3

4

通常、mvc のモデル ( http://en.wikipedia.org/wiki/Model-view-controller ) は観察可能/対象 ( http://en.wikipedia.org/wiki/Observer_pattern#Subject ) ですが、ビューはオブザーバーです ( http://en.wikipedia.org/wiki/Observer_pattern#Observer )。参照: http://webcourse.cs.technion.ac.il/234321/Winter2005-2006/ho/WCFiles/08-Design-Patterns.pptの mvc

于 2008-11-22T00:58:50.297 に答える
3

(この記事は、コントローラーがないという単純な理由から、MVC AFAIK の例ではありません。私に言わせれば、.net データ バインディングにより近いと言えます。)
MVC はオブザーバー パターンではありません。MVC は、関心の分離に関係しています。モデル、ビュー、およびコントローラーはすべて 1 つの仕事を行い、他の人が自分の仕事をすることを信頼します。ある意味で、コントローラーはビューを「指示」し、変更にどのように反応するかを指示します (Pure MVC)。コントローラーはまた、モデルと適切に対話します (その責任は、データをカプセル化し、制約/ルールを適用することです)。MVC では、コントローラーはすべてのアクティビティの開始点です。ユーザー入力は最初にコントローラーによって受信されます。ただし、ユーザー入力が最初にビューによって受信され、次にプレゼンターとプッシュ/同期される MVP のようなバリアントがあります。

Observer パターンは、状態の変化について別のオブジェクトを監視する場所です。つまり、.net イベントはオブザーバー パターンに従っていると言えます。

本当に小さい場合は、パターンを忘れて、アーキテクチャを気にせずにコードを作成します...ヒューリスティック/優れた設計の原則に従います

設計上の問題が発生したり、すべてが面倒になったりした場合は、パターン大隊を持ち込んでください。

于 2008-11-21T06:09:54.723 に答える
1

この記事が MVC ではないことに同意します。オブザーバーパターンの実装です。.NET のオブザーバー パターンは、イベントを使用して実装できます。これは記事のケースでした。

MVC には、モデルまたはビューからの要求に対して実行するアクションを制御するコントローラー クラスが必要です。MVC の適用は、関心の分離を大幅に促進するため、非常に優れたプログラミング手法です。mvc を使用すると、よりクリーンで拡張性が高く、テストしやすいアプリを作成できます。もう 1 つの注意点として、オブザーバー パターンを MVC アプリに適用できます。それらは互いに矛盾しません。

===========

2 番目の質問に答えるには、どのパターンが最適ですか? あなたのソフトウェア開発への取り組み方はかなり間違っていると思います。問題が発生するまでは、これらのことについてあまり心配する必要はありません。たとえば、このオブジェクトの状態が変化した場合、これらの他のオブジェクトがそれに反応する必要があるため、オブザーバー パターンを実装します。

私があなただったら、まずモデル側から始めて、そこから物事を取ります。

于 2008-11-21T05:54:18.483 に答える