1

我说的是在 wiki 上解释的通用 MVC 模式。那张讨厌的粉红色照片让我心碎。我见过不同的,但那些有间接关联的总是让我感到困惑。http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller

1 为什么视图与控制器有间接关联?

视图基于模型 - 这就是关联是直接的原因

2 但是为什么模型与视图有间接关联?它甚至不知道它不需要知道的视图的存在吗?

我使用 Java Servlets 和 Spring MVC 进行开发,我是一个相对较新的开发人员,我觉得它可以追溯到 Martin Fowler 讨论的其他语言。因为使用 Spring MVC,我总是使用控制器作为连接链接,没有奇怪的间接关联。

我在 3 年前才开始编程,所以我总是被提出正确做事的想法。例如,如果现在我们将 MVC 与 n 层相结合,而模型正是它的本质——只是一个带有参数和 getter+setter 以及整个 MVC 的愚蠢类,那么当它完全错误且效率低下时,你为什么要在模型中存储过去的业务逻辑只是按照最初的意图服务用户界面,还是不是?我们有 DAO 和封装 DAOS + 一些逻辑的服务层,它与模型有什么关系?

我的典型模型并不比传统的“学生”或“汽车”类复杂,通常类似于数据库中的表(我目前不使用 ORM)我是否正确使用它?DTO 与模型有何关系?

4

1 回答 1

1

1 为什么视图与控制器有间接关联?

控制器负责调解对模型的行为请求。这是因为请求倾向于更改模型中保存的几个协作对象,而不是仅影响一个对象的简单“更改名称”。让控制器单独访问模型,允许视图简单地访问来改变模型(而不是视图改变大量模型对象本身)。

这是一种间接关联,因为 View 对象(例如类按钮的实例)不直接理解控制器对象。必须在之后应用连接(例如 onclick 回调)。

视图基于模型 - 这就是关联是直接的原因

这是不准确的,直接关联代表一个委托链接。View 是一个完全独立于它可能必须委托给的 Model 对象的对象。

授权需要了解目标对象,因此需要直接关联。当 View 对象需要信息时,信息的收集将委托给 Model 对象并返回给 View 以继续。

2 但是为什么模型与视图有间接关联?它甚至不知道它不需要知道的视图的存在吗?

您的 View 对象必须从您的模型中“提取”信息,这可能是不切实际的。Model 和 View 之间的间接关联表示当 Model 对象更改时对 View 对象的回调(查看观察者模式)。这将模型和视图之间的连接更改为“推”。

于 2012-08-24T09:52:08.223 回答