【问题标题】:Good model design strategies良好的模型设计策略
【发布时间】:2011-12-22 21:09:19
【问题描述】:

这些天我正在通过 iOS 编程工作,但不确定我的程序实施策略是否是最好的做事方式。

根据我的理解,模型应该是一个单独运行的程序,也就是说,如果我通过命令行通过提供必要的输入来调用它的函数,程序应该会自行执行并产生所需的结果。

有好几次,我发现我的模型和 VC 交织在一起。也就是说,虽然 VC 纯粹是处理视图和用户输入,并相应地调用模型中建立的函数,但在我看来,如果没有视图,模型将无法独立运行。

我的问题基本上来自这个怪癖,你们是坚持让模型独立于视图控制器运行,还是让它们相互干预和相互依赖。

【问题讨论】:

  • 我不知道您是如何理解该模型的,但这并不完全正确。您的模型应该是自包含的,因此您可以根据需要将其封装在命令行程序中。或者针对它运行测试。但它不需要是单独的可执行文件。

标签: iphone ios xcode model-view-controller


【解决方案1】:

您的模型不应包含任何控制器或视图代码。您应该能够在不需要控制器或视图的情况下对其进行测试。

您的控制器应该处理模型和视图之间的所有中介工作。

【讨论】:

    【解决方案2】:

    我理解你的问题,因为我一直在努力解决这个问题。但是您使用的语言过于模糊,无法给出好的答案。

    例如,您说“我发现我的模型和 VC 交织在一起[原文如此]”。你所说的“交织”到底是什么意思? View Controller 知道模型的接口并与之交互。这很正常,对吧?

    简短/模糊的答案是,您的视图控制器不应该做任何“模型”的事情(处理数据和计算),并且您的模型不应该做任何视图或控制器的事情(担心按钮按下、加载 PNG , 等等)。

    当您说“在我看来,如果没有视图,模型仍然无法独立运行”,这对我来说也太模糊而无法具体解决,但即使是设计良好的模型也只是“坐在那里”。他们需要一些刺激他们并与他们互动的东西。在一种情况下可能是测试代码,在另一种情况下可能是视图控制器。这并不意味着你做错了什么。

    如果您查看关于 SO 的问题的右栏,您会看到至少 10 个关于 MVC 的类似问题,所以请阅读 :)

    【讨论】:

      【解决方案3】:

      模型根本不应该与视图直接通信。模型应该仅在响应视图控制器的查询时与视图控制器通信。视图控制器应该在输入到视图中的输入和模型内的数据之间进行调解。将所有这些部分分开绝对很重要。即使您不这样做,您的应用程序仍然可以工作,并且在某些情况下,走捷径可能会更快,但是当您在未来处理所有问题时,您只会让自己承受很多痛苦。 iTunes Connect 上有关于此的精彩视频。尤其是涵盖 MVC 的 CS193P 中的视频 #1,请参阅:

      【讨论】:

        猜你喜欢
        • 2017-11-09
        • 2010-12-06
        • 2011-10-08
        • 1970-01-01
        • 1970-01-01
        • 2010-12-30
        • 1970-01-01
        • 2012-03-21
        • 1970-01-01
        相关资源
        最近更新 更多