我注意到MVC有两种截然不同的“风味”:
1)“原始”MVC模型直接与View对话 2)“Apple Cocoa”MVC,其中Controller使用Mediator模式,而Model和View从不直接通信
来自link text:
MVC的目标是通过解耦模型和视图,降低架构设计的复杂性,提高代码的灵活性和可维护性。
这对我很有意义。然而,对于#1,如维基百科上所示,你有一个模型和视图之间的链接,因此它们似乎很适合我。看起来“原创”MVC并没有解决它的目标。
相比之下,对我来说#2非常清楚地导致了一个通用视图,它只知道如何通过UI显示和输入数据,一个完全不关心它如何表示的模型,以及一个知道两者的控制器并成为唯一可能不可重复使用的代码。它实现了MVC目标。
这对我有好处,因为我在Cocoa工作,“相信”#2,我正在用简单的C ++工作,我可以相信任何东西。但是我会在野外发现哪些MVC口味呢?例如,Ruby on Rails,Struts,PureMVC ..这些“使用MVC”,但我希望在那里看到#1或#2?
编辑:听起来像#2是更受欢迎的一个,所以任何现代方法都使用#1,如果是,那么什么?
答案 0 :(得分:1)
我不确定什么更普遍被接受,但是大多数人认为Rails几乎是MVC的'规范',而在Rails中,模型和视图从不(几乎从不)直接对话。控制器完成所有查找和发送模型数据到视图。
答案 1 :(得分:1)
在asp.net Mvc中采用#2方法:控制器从/向模型读取和写入,向/从视图发送和接收数据。视图和模型永远不会直接对话。