【问题标题】:MVC variables in model or controller?模型或控制器中的 MVC 变量?
【发布时间】:2016-12-01 00:38:38
【问题描述】:

我正在尝试理解 MVC 模式,我终于明白了很多。有一个概念我还不太明白。我浏览了这里所有试图解释 MVC 的帖子,但是这个问题还没有得到清楚的回答。

您是在模型或控制器中创建变量,还是两者兼而有之?

我可以看到有人将变量从控制器传递到模型以更改变量中保存的数据,但是在模型中创建它们然后只从控制器调用它们的值会更好吗?还是在模型中创建变量,并将它们的值复制到控制器中的相同变量中会更好?

如果你知道,请解释为什么一个比另一个好。我要求理解,而不仅仅是知道正确的答案。谢谢。

【问题讨论】:

    标签: variables design-patterns model-view-controller model controller


    【解决方案1】:

    如果我直接回答

    您是在模型中创建变量还是在控制器中创建变量?

    这并不重要。

    ModelController背后的主要思想是

    • 控制器仅存在于 Presentation Logic
    • 模型仅存在于 业务逻辑
    • 因此,如果您想使用不同的展示逻辑来展示您的模型,您可以将现有的 Model 取出并使用新的 Controller 插入它而不会出现任何问题因为您的业务逻辑和表示逻辑是解耦的(不会相互混合)。

    这是我为 MVC 架构找到的最佳图表。希望你能借此提升你的理解力。

    因此,就变量而言,在模型中,您应该只为业务逻辑目的创建变量。在 Controller 中,仅用于演示目的。 :))

    【讨论】:

    • 这是一个很好的图表,但你可以看到我的困惑所在。即使有了这个漂亮的图表,变量也没有被提及。
    • @user2470057 只要不与应用程序的业务逻辑混合,在控制器中使用变量完全没有问题。实际上 Model 是 Controller 的服务提供者。 :))
    • @user2470057 如果我改进您的语句,我会说“控制器负责 PRESENTATION 逻辑、保存变量、调用模型以更新控制器中存在的变量并调用视图以更新控制器中存在的更新变量。” :))
    • 谢谢,这看起来我现在可以理解了。我会等几天,以确保每个人都同意这一点。我还找到了您从中获得该图像的链接,并希望确保原作者获得信用:essenceandartifact.com/2012/12/the-essence-of-mvc.html
    • 根据该链接的作者,他说数据保存在模型中,所以据我所见,变量并没有真正保存在控制器中。
    【解决方案2】:

    应用程序整个生命周期所需的持久数据应保存在模型中。设置、获取和操作模型中数据的模型方法调用应由控制器完成。

    应用程序或视图需要的临时数据(出于任何原因)可以保存在控制器中...但任何持久性数据都不应该保存在控制器中控制器,因为这样做被认为是一个糟糕的 MVC 设计模式实现。

    【讨论】:

      猜你喜欢
      • 2011-10-15
      • 2014-04-18
      • 2015-09-15
      • 1970-01-01
      • 1970-01-01
      • 2012-02-23
      • 2011-09-12
      • 1970-01-01
      • 2011-02-27
      相关资源
      最近更新 更多