1

考虑以下视图结构:

  • 布局视图
    • 地图视图
    • 列表显示
      • 项目视图
        • 列表显示
          • 项目视图
          • 项目视图
      • 项目视图
        • 列表显示
          • 项目视图
          • 项目视图

目前,我对整个结构只有一个控制器。所有嵌套视图都通过冒泡事件与该控制器进行通信。

我想为每个级别创建一个控制器吗?我有什么工作,但我觉得我的布局视图和列表视图做得太多 - 例如,当控制器说“这里是更新的项目列表(来自服务器)”时,布局视图负责删除地图不属于新数据的标记,更新现有的,并添加新的。同时,LayoutView 的第一个 ListView 负责做同样的事情,但它的项目。

为每个控制器创建一个控制器会更好吗?如果是这样,我会怎么做?布局视图是否应该注入一个 ListController 和一个 MapController,它们将负责构建子视图?

如果对技术感兴趣:这是针对 JavaScript 小部件的。

4

1 回答 1

0

您只列出了一组视图。如果您正在考虑实现基于 MVC 的小部件库,则需要具有相应的模型和控制器。也就是说,对于您拥有的每个视图,您需要有一个模型实例和一个控制器实例(您需要对相应的类进行编码)。

例如,您将拥有 ListModel、ListView 和 ListController 类。您可能决定编写另一个名为 List 的类来将所有内容绑定在一起 - 这样您的应用程序的 UI 构建代码就可以简单地实例化 List 类并使用它。如果您愿意,您可以减少课程的数量。例如,您可能决定将视图和控制器合二为一(因为视图和控制器之间的耦合很紧密)。

同样,您将拥有 ItemModel、ItemView 和 ItemController 类(以及一个 Item 类)。

模型类将具有以相应视图类可以用来呈现特定视图的方式将您的数据呈现给相应视图类的工具。控制器将知道如何解释发生在相应视图上的 UI 交互并调用相应视图和相应模型上的方法。

为了允许创建树层次结构,您最好使用 GoF 组合模式。

作为 MVC 模式的替代方案,您可能希望查看职责分配策略不同的 PAC 模式。MVC现在被广泛使用。

于 2014-06-04T19:23:56.307 回答