【问题标题】:What does MVC class organization look like for multiple views and controllers?多视图和控制器的 MVC 类组织是什么样的?
【发布时间】:2011-02-10 20:08:46
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: cocoa model-view-controller organization


    【解决方案1】:

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

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

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

    【讨论】:

    • 在这方面有什么好的例子吗?我正在慢慢习惯 Adium,但我对 CoreData 和其他“面向数据”的应用程序更感兴趣。
    • Apple 的 Sketch 示例代码是“标准”参考应用程序:developer.apple.com/mac/library/samplecode/Sketch-112
    猜你喜欢
    • 2011-11-26
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 2011-06-06
    • 1970-01-01
    • 1970-01-01
    • 2012-11-26
    • 1970-01-01
    相关资源
    最近更新 更多