cocoa应用程序中有多少个控制器类?

时间:2009-10-24 03:06:39

标签: cocoa design-patterns

在设计我的应用程序时,我应该拥有多少个控制器?对整个应用程序,整个窗口或每个类都有一个控制器是一种好习惯吗?此外,在Interface Builder的doc窗口中创建了多少个对象。教程通常有一个名为AppController。完整的应用程序通常有App Controller或n * XYZController吗?

2 个答案:

答案 0 :(得分:4)

在非基于文档的应用中,每个窗口一个。我只谈论你自己编写的控制器,而不是窗口控制器,视图控制器,对象控制器,阵列控制器,树控制器或字典控制器。 (请注意,有些人确实将自定义控制器设置为NSWindowController。)我也没有计算拥有根控制器的应用程序委托。

在单窗口应用程序中,这通常意味着一个自定义控制器。

在基于文档的应用程序中,您通常根本不编写控制器,而是编写一个或多个NSDocument子类 - 每个文档类型一个。每个文档对象通常只拥有一个窗口。

无论您正在编写什么类型的应用程序,您可能还想为您拥有的任何浮动实用工具面板(例如Inspector)制作控制器,尽管您应该考虑替代方案:使面板成为自己的控制器,如NSFontPanel和NSColorPanel。

答案 1 :(得分:1)

每个窗口一个,正如Peter Hosey所暗示的并不是一个糟糕的策略,但是一个人的窗口是另一个女人的子视图。我更喜欢在功能集群中思考:如果需要完成两个或更多相关的事情,他们可能非常需要一个控制器。

但是,这是至关重要的,你需要能够为你的控制器想一个好名字:importController,或textFilesImportController或externalFilesDisplayController是明确特定控制器将做什么的名称不会这样做。

如果您无法想象控制器的良好名称,请将其视为您不需要它或您仍然不清楚您的设计的标志。在这种情况下,您可以选择将它称为您的whateverController,直到您的下一个洞察力出现。