2012-04-02 17 views
0

コントローラとコマンドが両方ともビジネスロジックをカプセル化しているので、時々私はコントローラとコマンドが同じだと思います。私が考えることができる唯一の違いは、コマンドはパラメータなしでexecute()メソッドを持たなければならないが、コントローラのexecute()メソッドはパラメータを受け入れることができるということです。または私は間違っていますか?MVCパターンのコントローラとコマンドパターンのコマンドの違いは何ですか?

答えて

0

自分自身を明らかにした願っています。概念的には、コマンドはデザインパターンですが、コントローラはメタデザインパターンの一部です。つまり、それらは相互に排他的で包括的ではありません。コントローラーはコマンド(またはコマンドの集合)から構成することができます。 MVCには多くの種類があり、コントローラーにはさまざまな責任がありますが、一般にコントローラーはユーザー入力をアプリケーションデータ(モデル)に変換するために厳密に使用されます。ほとんどのMVCフレーバでは、モデルが変更されたときにビューを更新する役割も担います。 一般に、コントローラは長寿命です。特定のモデルやビューが存在する限り存在し、ビュー/モデル登録システムを持っていれば存在します。

一方、コマンドは理論的にはステートレスです。コマンドはガベージコレクションのためにリリースされます。実際には、コマンドはexecuteメソッドの実行時間よりわずかに長く存続することができます。これは、より簡単に非同期操作を容易にするためです。しかし、コマンドは常に唯一のタスクに集中する必要があり、終了したらそれらは消えるべきです。

0

差が巨大である:MVC(モデルビューコントローラ)に

  • 、「コントローラ」は、「モデル」に格納されているものを「表示」するように指示し、また、ユーザによって行われた変更を保存します「ビュー」の「モデル」のすべての変更は「ビュー」に通知されます。モデルはXMLファイル、データベースなどとなります。 "ビュー"の例はGUIです。 HEREあなたはmvcパターンの詳細を読むことができます。

  • コマンドパターンでは、「コマンド」オブジェクトは呼び出し元を知らずにアクションを実行します。 HEREスイッチャーの簡単な例があります。スイッチャーが..

をランプのオン/オフを切り替えるだけでなく、エンジン、または何か他のことができます私は、私はそれは少しオレンジにリンゴを比較するようなものだ

関連する問題