【问题标题】:MVC Interdependent controllers : Who gets to store?MVC 相互依赖的控制器:谁来存储?
【发布时间】:2016-04-18 13:02:56
【问题描述】:

我和我的一个朋友正在争论 MVC(模型视图控制器)设计模式。我们正在开展一个项目,其中我们的两个控制器相互依赖:

我们正在操作两种类型的对象:图案和布局。布局是模式的组合,这意味着在模型中,布局具有模式的 std::vector。其实,当我们要创建一个Pattern的时候,我们必须先创建一个Layout,因为一个Pattern不存在于一个Layout中就不可能存在。

知道了这一点,我们想要为这两种类型的数据实现控制器,并且正在争论谁来存储模式数据

从我朋友的角度来看,由于没有布局就不能存在模式,我们可以让布局控制器负责存储布局模型中的模式数据。

从我的角度来看,当我们谈论模式数据时,我更愿意让模式控制器处理所有与模式相关的事情。因此,模式控制器将有一个模式容器,而布局控制器将有一个指向布局中存在的模式的指针列表。

我朋友技术的优点是我们没有两个地方的数据(Pattern Controller Container 和 Layout Data),而我的优点是每个控制器的角色不混合,我们可以操作 Pattern不知道它属于什么布局。你怎么看?

【问题讨论】:

  • 我认为这种问题更适合programmers
  • @HenriqueBarcelos 在引用其他网站时,指出cross-posting is frowned upon 通常会有所帮助
  • 是的,当然。我有这种时尚认为这很明显,不需要重述。

标签: qt design-patterns model-view-controller


【解决方案1】:

如果只是为了在Layout里面存储Pattern,在我看来还是和Layout有关的。布局知道他有一个 Pattern 列表。他知道如何存储它们,如何控制实际的向量。

在我看来,模式不应该知道他在他上面的列表中。这将减少耦合。模式控制器知道如何处理模式。就是这样。

因此,LayoutController 知道如何使用 Layout,并将 Patterns 添加到位于 Layout 中的列表中

PatternController 知道如何使用 Pattern,而不知道它存储在他上面的什么位置。

【讨论】:

    猜你喜欢
    • 2016-10-12
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多