RailsのMVCデザインパターンやDjango(と他の人たち)のMTVデザインパターンにかなり精通しています。私は他のフレームワークがWebアプリケーションの開発にどのようなパターンを使用しているのだろうかと思っていました。彼らの長所と短所は何ですか?フレームワークのデザインパターン
おかげ
RailsのMVCデザインパターンやDjango(と他の人たち)のMTVデザインパターンにかなり精通しています。私は他のフレームワークがWebアプリケーションの開発にどのようなパターンを使用しているのだろうかと思っていました。彼らの長所と短所は何ですか?フレームワークのデザインパターン
おかげ
PHP用の小型(60行)MVCエンジン、http://code.google.com/p/barebonesmvc-php/は、「テンプレートメソッド」パターンに依存しています。クラスはこれらのステップのいくつかを実装する責任があります。
static function sendResponse(IBareBonesController $controller) {
$controller->setMto($controller->applyRequestToModel());
$controller->mto->applyModelToView();
}
エンジンの場合、開発者はapplyRequestToModelを実装する必要があります。 SpringのWeb/MVCモジュールだけでなく、私のapplyModelToViewメソッドだけでなく、Map/hash/assoc-arrayをとり、Springが抽象名(ModelAndView)の名前でMVCの2つのファセットを融合する点を除いて、私の抽象化はより適切な名前ModelTransferObject(別名$ mto)です。 GoFのは、ウェブのためのMVC
MTVは、通常、MVCと呼ばれるもののためだけに、より正確な名前です。実際には、RailsとDjangoは同じパターンを使用しています。それは何年にもわたって確立されており、おそらく半オブジェクトパターンを除いて、どのようなフレームワークも異なる仕方をすることはほとんどありません。しかし、ハーフオブジェクトはウェブ世界で確立されていません。
「実際の」MVCは、クラシックGUIやJavaScript内に見られるパターンです(ブラウザ内で何が起きているかを見るだけの場合)。それは単にWWWには当てはまらないので、適応させなければならなかった。結果は混乱させることが多く、MVCとも呼ばれますが、MTVはより正確な記述です。
「制御の反転」を参照してください。テンプレートメソッドパターンに関するGoFのリファレンス春の
いえば、単純である必要があり、リスニングの必要がない、Webサーバーはありませんそして、その要求はイベントです。別のデザインパターンは必要ありません。ウェブのMVCは、コントローラとビューとモデルとの間の仲介によって、メディエータパターンの具体的なインスタンスを本質的に突き止めます。 –
MVCとは対照的に、Webバージョンでは、各アクションのテンプレートを使用してGUIを作成する必要があります。これは古典的なGUIでは必要ありません。したがって、Webには2つの大きな違いがあり、 "View"という概念と他の部分(モデル、コントローラ)との相互作用は劇的に変化します。 MTVのような新しい名前が適切な理由です。 – vog
PS ....私はJavascriptで「本当の」MVCを実装しています。リスナーを作成した後、イベントの通知を受けるためにウィジェットを登録します。これにより、Ajax対応のウィジェットを同期させておくことができます。例えば、コメントを追加すると、コメントの数を表示するウィジェットをさらに更新することができます。 –
これは戦略(別名「テンプレート化された方法」)パターンを使用して実装されたMTVです。だから、はい、内部的には、すべてのソフトウェアが内部的に複数のパターンを使用するため、別のパターンを使用しますが、全体としてはまだMTVです。 – vog
あなたのGoFを読んで、戦略とテンプレートメソッドのパターンは同じではありません。関連する、はい、同じ番号。 –