MVC:控制器和模型之间的关系

时间:2010-08-12 10:31:41

标签: model-view-controller model view controller

我对MVC中的控制器 - 模型关系略感困惑。

控制器是否应该能够访问系统中的任何模型,或者它是否与特定模型具有1:1的关系?这两种选择似乎都存在问题:

如果关系是1:1,显然如果其他地方需要更新,则不能从窗口三元组外部更新窗口标题。那么模型是否可以访问其他模型(他们如何找到它们?)

如果它不是1:1并且控制器可以访问任何模型,那么通常如何访问它们(服务定位器?)以及如果需要多个特定模型的实例,该怎么办。

我有点困惑!谢谢你的帮助。

3 个答案:

答案 0 :(得分:3)

对于基本的CRUD能力,我认为1:1关系有效,但绝不是每个控制器都应该有相应模型的规则。话虽如此,我显然不认为在控制器中访问多个模型是个问题。

我的MVC应用程序中唯一具有1:1关系的是模型和表格。

答案 1 :(得分:1)

MVC范例基于一个主要规则,即关注点分离。通过与模型的某种关系使控制器1:1依赖,并不是将这些问题分开,而是使它们更加统一。名为“users”的控制器只能与名为 users 的模型进行对话,但为什么要将其与显式关系进行对话?

模型应该几乎总是存在于独占静态上下文中,因此可以在控制器和其他模型中轻松访问它们。

答案 2 :(得分:0)

通常我不直接从控制器访问模型。我通常在模型和控制器之间添加另一层。 例如: 控制器层 - >服务层 - >模型层

对于每个Model类,我构建一个Service类来访问它,Controllers可以访问应用程序中的每个Services。 我认为这是做事的好方法。 如果您需要一些例子,请询问。 :)