0

在一般意义上的 MVC 中,View 和 Controller 的关系一般预期是 M:1 吗?也就是说,许多视图会使用同一个控制器?但是一个视图不会使用很多不同的控制器吗?

或者,我应该能够与任何控制器交换任何视图并让一切正常吗?我此时看到两者之间存在相当紧密的依赖关系,因此这不适用于我当前的布局......

我正在尝试为课堂项目设计一些东西,但我不确定如何组织/设计我的视图和控制器。

更新:到目前为止我收到的答案是有帮助的,但不是确定的。让我们稍微扩展一下我的问题。回想起来,一个重要的方面是模型可以改变(策略模式*) 在一个实例中,模型可以创建一个数据库。在另一种情况下,它可以从数据库中读取。我最初的设计目标是获得一个能够处理所有模型的统一(尽管简单)视图。

*我读到(在这里)控制器可以看作是一种策略模式的实现。我的模型将以类似但独立的方式实现。

这是该概念的快速(不完整)类图(鉴于更新的信息):

我的 MVC 实现概念的类图 http://theopensourceu.com/wp-content/uploads/2010/02/MVC-2334703.png

4

2 回答 2

1

视图确实并且不应该知道有关控制器的任何信息。在这方面,我想说,这种关系是不存在的。

视图接收模型并显示它。谁准备了这个模型原则上是无关紧要的。

当然,在实践中边界有时会融化。出于某种原因,比如简化代码依赖关系,视图有时会知道是什么控制器着火了。但是,如果您谈论的是纯粹的概念性讨论,那么不,控制器和视图之间没有直接联系。相反,他们通过中介进行交流,这是一种模式。

           ControllerX
--------------------------------
Model1       Model2       Model3
   |            |            |
View1        View2        View3

原则上可以由多个控制器输出相同的视图。如果控制器能够实例化模型,那么它就足够了。

于 2010-02-25T14:37:43.643 回答
0

我自己对 MVC 结构的看法是这样的:

控制器 - 最重要的部分。如果你只需要使用一个 MVC,那就是这个。我让我的控制器从模型中调用数据,然后将数据(以及我需要的任何其他位)传递给视图(或嵌套视图),然后将其发送给用户。

也就是说,一个控制器可以使用许多模型和视图——但反过来不行。

于 2010-02-26T03:04:22.550 回答