我对MVC中的控制器 - 模型关系略感困惑。
控制器是否应该能够访问系统中的任何模型,或者它是否与特定模型具有1:1的关系?这两种选择似乎都存在问题:
如果关系是1:1,显然如果其他地方需要更新,则不能从窗口三元组外部更新窗口标题。那么模型是否可以访问其他模型(他们如何找到它们?)
如果它不是1:1并且控制器可以访问任何模型,那么通常如何访问它们(服务定位器?)以及如果需要多个特定模型的实例,该怎么办。
我有点困惑!谢谢你的帮助。
答案 0 :(得分:3)
对于基本的CRUD能力,我认为1:1关系有效,但绝不是每个控制器都应该有相应模型的规则。话虽如此,我显然不认为在控制器中访问多个模型是个问题。
我的MVC应用程序中唯一具有1:1关系的是模型和表格。
答案 1 :(得分:1)
MVC范例基于一个主要规则,即关注点分离。通过与模型的某种关系使控制器1:1依赖,并不是将这些问题分开,而是使它们更加统一。名为“users”的控制器只能与名为 users 的模型进行对话,但为什么要将其与显式关系进行对话?
模型应该几乎总是存在于独占静态上下文中,因此可以在控制器和其他模型中轻松访问它们。
答案 2 :(得分:0)
通常我不直接从控制器访问模型。我通常在模型和控制器之间添加另一层。 例如: 控制器层 - >服务层 - >模型层
对于每个Model类,我构建一个Service类来访问它,Controllers可以访问应用程序中的每个Services。 我认为这是做事的好方法。 如果您需要一些例子,请询问。 :)