为了为这个问题奠定基础,我将说明我从以下方面获得了MVC,MVP和被动视图的定义:
模型视图控制器(MVC)
模型视图演示器(MVP)
被动视图(PV)
Apple一直声称它使用MVC设计模式,但我注意到在OS X 10.5中我们已经获得了NSViewController,KVO,绑定等等,这些对象看起来更像是被动视图设计模式.这是苹果希望我们前往的地方吗?我希望以尽可能与Apple选择的设计模式一致的方式规划我的代码,这就是为什么我想知道Apple的目标.有人有线索吗?
任何复杂的代码都有许多可能适用不同模式的地方.MVC在Cocoa文档中非常突出,因为它解释了您的功能代码(模型),UI代码或IB设计(视图)与将它们连接在一起的Cocoa服务(控制器)之间的关系.这是值得强调的,特别是在介绍性的dox中,因为你需要一点"警醒"来停止认为你必须自己编写它,并开始考虑如何设计你的独特部分,并相信框架来做它管道工作.
MVC的变体定义具有传奇色彩,值得指出的是MVC没有在规范的"四人帮"一书"设计模式"中描述.同样值得承认的是,Cocoa的"MVC"模型与SmallTalk 80 MVC(术语所源自的地方)并不相同.
值得指出的是,"GoF"实际上使用"模式"一词来表示特定的文档样式,而不是设计模式所描述的代码的抽象方式.太糟糕了,这种用法已经大部分丢失了.如果我们都这样理解这个词,那么我可以说"如果有人真的为Cocoa的MVC编写一个模式,那将会非常有用." 然后我们不会都这么困惑!
我不会说 Cocoa 遵循那里描述的被动视图模式。这意味着控制器完成了准备视图和发送更改通知的所有工作。在 Cocoa 中,视图对象通常会响应来自模型的 KVO 通知(通过绑定),刷新其绑定到的控制器中的数据,通过数据格式化程序或值转换器准备数据,最后将其显示在屏幕上。
Cocoa 很好地遵循了 MVC,尽管“控制器”方面通常分为视图控制器和模型控制器。您可以在此处阅读有关此内容的更多信息。如果您有任何关于您感到困惑的具体示例,也许我可以提供有关 Cocoa 工作方式的更多详细信息。
在同一指南中,本节介绍了一些您可能会觉得有用的其他设计模式。根据我自己的经验,尽管在完成了几个项目后,Cocoa 中的 MVC 往往会很自然地出现,但我不会太担心它。
| 归档时间: |
|
| 查看次数: |
6315 次 |
| 最近记录: |