为了为这个问题奠定基础,我将说明我从以下方面获得了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编写一个模式,那将会非常有用." 然后我们不会都这么困惑!