Dav*_*vid 5 model-view-controller
除了它的"哲学"方面,让我的控制器也成为我的模型是一个坏主意吗?
这似乎节省了一些编程时间.我不必在控制器和模型之间创建逻辑,因为它是一样的.我可以直接与视图进行交互.
将M和C分开是什么意思?模块化 - 即将一个模型和控制器集换成另一个模型的能力 - 将它们分开的唯一原因是什么?在我看来,"交换"模块的发生比(例如)必须更新模型和控制器要少得多,因为模型中的某些东西正在发生变化.
根据MVC概念,一个简单的计算器应该同时具有控制器和设置视图(如默认设置或其他东西),这似乎很奇怪.我知道这是一个简单的例子,但它似乎适用于所有情况(除了框架).
主要原因是代码的可重用性。如果您在职业生涯中只会编写一个程序,那么也许这并不重要。如果您打算以此为职业,那么拥有可重复使用的部件就很有价值。设计良好的模型、控制器和视图类很容易放入其他程序中。我一直这样做。
\n\n考虑UITableViewController
,它是一个控制器。现在想象一下,如果它专门设计用于处理音乐曲目(模型),并且当您想要处理其他事情时,您需要创建一个完全不同的表管理类。避免这个噩梦就是 Cocoa 中大量使用 MVC 的原因。
还有其他方法可以分割事物。有些语言大量子类化而不是委托化。但在Cocoa中,分割程序的主要手段是MVC,而且效果很好。
\n\n编辑:只是来自开发商业应用程序世界的更多原因。
\n\nMVC 中的内存处理要容易得多。当视图对象(以及许多控制器对象)离开屏幕时,您可以保留模型对象并丢弃它们。
序列化用控制器和视图包装的模型对象更容易,并且以多种方式显示相同的数据更容易。即使在 \xe2\x80\x9csimple\xe2\x80\x9d 文本编辑器中,您可能希望能够进行分屏,或者让多个窗口显示同一文档。在 MVC 中,\xe2\x80\x99s 非常容易。
如果您现在或将来不需要灵活性,则您不需要太多架构。但大多数实际项目并不是那么简单。MVC 源于 Xerox\xe2\x80\x99 编写大型程序的经验以及将所有内容放在一起时遇到的困难。
\n\n编辑 2:我正在查看您之前的编辑:\xe2\x80\x9c 根据 MVC 概念,一个简单的计算器应该同时具有控制器和设置视图(例如默认设置等),这似乎很奇怪。 \xe2\x80\x9d
\n\n这正是 MVC 的原因。必须重新编码专门为计算器应用程序保存用户设置所需的所有内容似乎很疯狂。您\xe2\x80\x99d 想要一个通用的\xe2\x80\x9c请保存这些用户设置\xe2\x80\x9d,它与UI 完全分开,您可以重复使用。在 OS X 上,它\xe2\x80\x99s 称为NSUserDefaults
,并且Calculator
应用程序正是以这种方式存储其配置。
归档时间: |
|
查看次数: |
3845 次 |
最近记录: |