【发布时间】:2010-11-14 05:23:42
【问题描述】:
我(我相信你们中的许多人)非常熟悉 Rails 的 MVC 设计模式以及 Django(和其他人的)MTV 设计模式。我想知道其他框架用于 Web 应用程序开发的其他模式。他们的优势/劣势是什么?
谢谢
【问题讨论】:
标签: ruby-on-rails model-view-controller design-patterns
我(我相信你们中的许多人)非常熟悉 Rails 的 MVC 设计模式以及 Django(和其他人的)MTV 设计模式。我想知道其他框架用于 Web 应用程序开发的其他模式。他们的优势/劣势是什么?
谢谢
【问题讨论】:
标签: ruby-on-rails model-view-controller design-patterns
我的 PHP 微型(60 行)MVC 引擎http://code.google.com/p/barebonesmvc-php/ 已成功用于 Cisco 的嵌入式消费类设备,它依赖于“模板方法”模式,其中父类指定算法的步骤,但子类负责实现其中的一些步骤。
static function sendResponse(IBareBonesController $controller) {
$controller->setMto($controller->applyRequestToModel());
$controller->mto->applyModelToView();
}
在我的引擎中,开发者需要实现 applyRequestToModel。不仅 Spring 的 Web/MVC 模块,还有我的 applyModelToView 方法,都采用 map/hash/assoc-array 并使其可用于视图,除了 Spring 以抽象的名称 (ModelAndView) 将 MVC 的两个方面混为一谈,而我的抽象更适合命名为 ModelTransferObject(又名 $mto)。
说到Spring,在GoF参考中关于模板方法模式,GoF指的是“控制反转”
【讨论】:
MTV 只是通常称为 MVC 的更准确的名称。所以事实上,Rails 和 Django 使用相同的模式。 Is 已经建立了多年,几乎没有任何框架做不同的事情,除了半对象模式。然而,halb-objects 尚未在网络世界中建立。
“真正的”MVC 是经典 GUI 和 JavaScript 中的一种模式(如果您只看浏览器中发生的事情)。它根本不适用于万维网,因此必须对其进行调整。结果令人困惑地通常也称为 MVC,而 MTV 是更准确的描述。
【讨论】: