我的一位朋友正在讨论MVC(模型视图控制器)设计模式。我们正在开发一个项目,其中两个控制器是相互依赖的:
我们正在操纵两种类型的对象:图案和布局。布局是模式的组合,这意味着在模型中,布局具有模式的std :: vector。实际上,当我们想要创建一个Pattern时,我们必须先创建一个Layout,因为Pattern不能存在而不在Layout中。
知道这一点,我们希望为这两种类型的数据实现控制器,正在争论谁来存储模式数据。
从我的朋友的角度来看,因为没有布局我们可以让布局控制器负责在布局模型中存储模式数据。
从我的观点来看,正如我们所讨论的模式数据一样,我更倾向于 et Pattern Controller处理与模式相关的所有内容。因此,模式控制器将具有模式容器和布局控制器,其中包含指向布局中存在的模式的指针列表。
我朋友的技术的优点是我们没有两个地方的数据(模式控制器容器和布局数据),我的优势是每个控制器的角色没有混合,我们可以在不知道它属于哪种布局的情况下操纵模式。你觉得怎么样?
答案 0 :(得分:1)
如果它仅用于在布局中存储图案,从我的角度来看,它仍然与布局相关。布局知道他有一个Pattern列表。他知道如何存储它们,如何控制实际的矢量。
从我的角度来看,模式不应该知道他在他上面的列表中。这会减少耦合。模式控制器知道如何处理模式。就是这样。
因此,LayoutController知道如何使用布局,并在列表中添加位于布局中的模式
PatternController知道如何使用Pattern而不知道它存储在他上面的位置。