在MVC的一般意义上,视图和控制器的关系通常预期为M:1?也就是说,许多视图将使用相同的控制器?但是一个视图不会使用很多不同的控制器?
或者,我应该能够与任何控制器交换任何视图并让一切正常吗?我发现这两者之间存在相当紧密的依赖关系,所以这对我当前的布局不起作用......
我正在尝试为类项目设计一些东西,而且我不确定如何组织/设计我的视图和控制器。
更新:到目前为止我收到的答案很有帮助但不是确定的。让我们稍微扩展我的问题。回想起来,一个重要的方面是模型可以改变(策略模式*)。在一个实例中,模型可以创建数据库。在另一个中,它可以从数据库中读取。我最初的设计目标是获得一个能够处理所有模型的统一(尽管简单)视图。
*我读过(here)可以将Controller视为策略模式实现。我的模型将以类似但独立的方式实施。
这是概念的快速(不完整)类图(给定更新的信息):
答案 0 :(得分:1)
视图确实并且不应该知道有关控制器的任何信息。在这方面,我想说,这种关系是不存在的。
视图接收模型并显示它。谁准备这个模型原则上是无关紧要的。
当然,在实践中,边界有时会融化。出于某种原因,例如简化代码依赖性,视图有时会了解控制器烧毁的内容。但是,如果你在谈论纯粹的概念讨论,那么不,控制器和视图之间没有直接的联系。相反,他们通过中介进行沟通,这是一种模式。
ControllerX
--------------------------------
Model1 Model2 Model3
| | |
View1 View2 View3
原则上可以由多个控制器输出相同的视图。如果一个控制器能够实例化一个模型,那么它就非常有用了。
答案 1 :(得分:0)
我对MVC结构的看法是:
控制器 - 最重要的部分。如果你只需要使用一块MVC,那就是这个。我让我的控制器从模型中调用数据,然后将数据(以及我需要的任何其他位)传递到视图(或嵌套视图)中,然后发送给用户。
也就是说,一个控制器可以使用许多模型和视图 - 但不是相反。