gpt4 book ai didi

model-view-controller - MVC : why the separation of model, View 和 Controller ?

转载 作者:行者123 更新时间:2023-12-04 17:12:25 25 4
gpt4 key购买 nike

除了它的“哲学”方面之外,让我的 Controller 也成为我的模型是不是一个坏主意?

它似乎节省了一些编程时间。我不必在 Controller 和模型之间创建逻辑,因为它是同一件事。我可以直接与 View 交互。

把 M 和 C 分开有什么意义?模块化——也就是说,能够将一个模型和 Controller 组交换为另一个——是分开它们的唯一原因吗?在我看来,“交换”模块的发生比(例如)必须更新模型和 Controller 要少得多,因为模型中的某些东西正在发生变化。

根据 MVC 概念,一个简单的计算器应该同时具有 Controller 和设置 View (如默认设置或其他东西),这似乎很奇怪。我知道这是一个简单的例子,但它似乎适用于所有情况(除了框架)。

最佳答案

主要原因是代码的可重用性。如果您在职业生涯中只打算编写一个程序,那么也许这并不重要。如果您打算以此为业,那么拥有可重复使用的零件很有值(value)。设计良好的模型、 Controller 和 View 类很容易放入其他程序中。我一直这样做。

考虑UITableViewController ,这是一个 Controller 。现在想象一下,如果它是专门为处理音乐轨道而设计的(模型),当你想处理其他事情时,你需要创建一个完全不同的表管理类。避免这个噩梦是 Cocoa 中大量使用 MVC 的原因。

还有其他方法可以拆分。一些语言重分类而不是委托(delegate)。但在 Cocoa 中,拆分程序的主要手段是 MVC,而且效果很好。

编辑:来自开发商业应用程序世界的更多原因。

  • MVC 中的内存处理要容易得多。您可以保留模型对象并在 View 对象(以及许多 Controller 对象)离开屏幕时丢弃它们。
  • 序列化不包含 Controller 和 View 的模型对象更容易,并且以多种方式显示相同的数据要容易得多。即使在“简单”的文本编辑器中,您也可能希望能够进行分屏,或者让多个窗口显示同一个文档。在 MVC 中,这很容易。

  • 如果您现在或将来不需要灵 active ,则不需要太多架构。但大多数实际项目并不是那么简单。 MVC 源于 Xerox 编写大型程序的经验以及将所有内容放在一起时遇到的困难。

    编辑 2:我正在查看您之前的编辑:“根据 MVC 概念,一个简单的计算器应该同时具有 Controller 和设置 View (如默认设置等),这似乎很奇怪。”

    这正是 MVC 的原因。必须重新编码专门为计算器应用程序保存用户设置所需的所有内容似乎很疯狂。您需要一个与 UI 完全分离并且可以重复使用的通用“请保存这些用户设置”。在 OS X 上它被称为 NSUserDefaults ,以及 Calculator应用程序正是以这种方式存储其配置。

    关于model-view-controller - MVC : why the separation of model, View 和 Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7045093/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com