代码之家  ›  专栏  ›  技术社区  ›  dmkc

对于多个视图和控制器,mvc类组织是什么样的?

  •  2
  • dmkc  · 技术社区  · 15 年前

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

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

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

    似乎我真正要问的是,如何在保留模块化mvc结构的同时,将多窗口/视图应用程序拆分为其逻辑块。我试着从wordpress的iphone应用程序和adium中查看代码,但这两个应用程序似乎都有一个相对较大的代码库,我迷失在其中。

    1 回复  |  直到 15 年前
        1
  •  2
  •   Rob Keniger    15 年前

    通常,控制器是分层实现的。例如,在标准的cocoa文档体系结构中,您有一个 NSDocumentController 管理多个 NSDocument . 每个实例 NS文档 管理的一个或多个实例 NSWindowController ,以及 NSWindow控制器 可以管理的一个或多个实例 NSViewController .

    当您向下移动层次结构时,控制器的职责将变得更加具体和细粒度。在访问模型方面,cocoa有几个模式,比如委托和数据源模式,您可以使用这些模式来允许视图在不需要了解模型本身的情况下绘制。

    一般来说,应用程序只有一个统一的模型,除非有不同的模型是合理的(例如,如果你需要你的应用程序编辑不同类型的文档)。