2

MVC 本身的想法对我来说似乎很清楚,但我很难理解这个概念是如何“扩展到”多个视图和控制器的。

看来 Cocoa 采用了控制器作为模型和视图之间的“交换机”的方法。如果有多个视图,应用程序将如何组织和运行?如果每个视图都有一个控制器,主应用程序是否必须跟踪它产生的所有控制器,或者每个控制器将具有它实例化的“嵌套”控制器,例如,应用程序将创建一个窗口,该窗口将创建一个工具栏等?

如果整个应用程序需要使用相同的模型,或者您会将模型分解成更小的模型怎么办?

看来我真正要问的是如何将多窗口/视图应用程序拆分为其逻辑块,同时保留模块化 MVC 结构。我试图查看来自 WordPress iPhone 应用程序和 Adium 的代码,但两者似乎都有一个相对较大的代码库,我迷路了。

4

1 回答 1

2

通常控制器是分层实现的。例如,在标准 Cocoa 文档架构中,您有一个NSDocumentController管理多个NSDocument. 的每个实例NSDocument管理 的一个或多个实例NSWindowController,并且每个实例NSWindowController可以管理 的一个或多个实例NSViewController

随着层次结构的向下移动,控制器的职责变得更加具体和细化。在访问模型方面,Cocoa 有几种模式,例如委托和数据源模式,您可以使用它们来允许视图进行绘制,而视图不需要了解模型本身的任何信息。

通常,应用程序将有一个统一的模型,除非有不同的模型有意义(例如,如果您需要您的应用程序编辑不同类型的文档)。

于 2010-04-22T00:14:05.197 回答