正确使用MVC设计模式

6
我遇到了以下两种方法。
方法1: Method 1 方法2: Method 2 据我理解,模型和视图不应直接通信,所有通信都应通过控制器进行,因此方法1是正确的方式。但我在网上看到过各种文章介绍这两种方法。
如何正确实现MVC架构?
谢谢。

1
你可以在CS StackExchange上获得更好的回应(可能也可能不会)。 - adamdc78
你对MVC的误解可能源于你接触过ASP.NET MVC框架(最初是Rails的克隆)。所有类似Rails的架构都源于页面控制器概念的简化版本(这已经是一个极端简化的设计,适用于Web,大约在2000年左右)。但是,回答你的问题:这两个图表都不代表MVC。箭头都是错误的。 - tereško
1个回答

2
我认为第一个图表实际上是MVP(模型视图控制器)的一个实现。请参见此问题,最终链接到这里,其中包含一个被动视图的VMP模式的图表: enter image description here

我查看了那个堆栈问题中提供的答案;在所给的MVC解释中,他没有解释Model,但是已经说明了“关于MVC的另一个重要区别是View不直接绑定到Model”。 - Janak
你可能还应该链接到 原始论文,它实际上定义了 MVP。 - tereško
@Janak,你很少看到有人试图解释模型,因为即使是基本描述也需要几页纸。而要做好这件事,你最终会写一整本书。嗯...有人可能会争辩说,有些人已经写了:poeaaddd 书籍。 - tereško
@Janak - 对我而言,Model 是最直观的组件。它是代表问题域的对象。所以如果我要编写一个动物园应用程序,它就会成为 Animal 类(或结构体,这取决于语言)。它是领域模型类,保存数据并支持某种事件注册机制,以通知侦听器有关此数据更改的信息。 - radai

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接