我目前正在对我的应用程序进行重构和重组。我意识到模型和视图及其控制器之间的一些分离已经减少,我希望进行一些清理。
我的应用程序中使用了几个关键类:NSPersistentDocument、NSWindowController 和模型类。
NSPersistentDocument 类充当“模型控制器”;它拥有模型类的一个实例,并管理与模型的所有交互。
NSWindowController 类充当“视图控制器”;它拥有主窗口,并管理主窗口内视图的交互。此类也是定义窗口的 nib 文件的文件所有者。
我在这里看到的问题是我没有真正的“控制器”。我当前的设计迫使模型控制器和视图控制器相互了解。两者之间没有冥想对象,因此,我的模型和视图没有明确分离,这使得支持多个视图或模型成为一个问题。
我想将功能从现有的两个控制器转移到一个新的“控制器”类中,该类将充当模型控制器和视图控制器之间的控制器。归根结底,这仍然只是MVC设计模式,只是结构多了一点。
然而,我很难弄清楚这如何适合 Cocoa 基于文档的应用程序架构。
我最大的问题是在哪里以及如何创建这个新的控制器对象?
这如何适应 Cocoa 的架构?
我是否在对抗 Cocoa 的架构,有没有更好的方法来做到这一点?
Thanks.
对拥有“模型控制器”和“视图控制器”的强烈直觉。这是一个非常好的心理分类法,可以解释 M 和 V 通常如何联系在一起。但正如您所注意到的,您仍然可以在 MVC 中使用纯“C”将整个操作联系在一起。
如果您正在谈论一个控制器,则对于应用程序:
将(big-C)控制器视为从应用程序的 main() 函数中衍生出来的东西——在较早的 Cocoa 教程中,该对象通常称为 AppController。它可能是 UIApplication 的委托,也可能不是,但如果不是,您应该考虑在applicationDidFinishLaunching:
项目中应用程序委托的方法。然后,该 AppController 可以设置(并拥有)模型对象,并设置(并拥有)根视图控制器,您的 UI 将从中产生。
如果您正在谈论某个有多个实例的中介组件,文档架构中的每个模型/视图“对”都有一个实例,那么也可以制作类似的东西。DocumentController
是您想要的名称,尽管 Cocoa 已经有一个可能反映也可能不反映您需要的功能类型的名称。 “DocumentManager”是另一个候选名称。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)