0

我有一个 CoreData 实体 X,以及该实体的控制器 XController。现在有另一个实体 XGroup,它包含一组 X 实体和一个 XGroupController。

现在的问题是 XGroupController 需要与 XController 交互,最好只传递 XGroupController 一个 XGroup 来观察,然后从 X 实体中获取 XControllers。

所以问题是:在实体中存储对控制器的(弱,以避免保留循环)引用是一个好主意吗?只是感觉有点“不对劲”。是否有另一种设计模式?

[编辑] 更多信息:XController/XGroupController 是视图控制器;感觉“错误”的原因是视图层不应该在模型层中。所以@TechZen 的第一段是正确的。

但是,如果我没有那个参考,我该怎么做?我看到的方式是将 XGroupController 传递给所有现有的 XControllers(当它们发生变化时更新它们),然后当 XGroup 中的项目发生变化时,找到相应的控制器(通过检查它的 X 实体的 XControllers 属性是否在 XGroup 中)最后与 XControllers 交谈。

对于模型已经很好地处理的东西,我必须再次工作。如果我必须再次处理控制器层中的组,它不会使模型层变得毫无意义吗?

就位置/复杂性而言,差异是如此显着,我是否遗漏了什么?(也许我应该补充一点,在我的场景中,存储 XGroupController 需要通过模型提供给 XController 的信息是没有意义的)。

4

1 回答 1

0

如果“控制器”是指 MVC 视图/界面控制器,那么是的,这是错误的,因为它破坏了封装。数据模型应该完全不关心它的数据是如何显示的。

如果您的“控制器”只是一个具有该名称的实体,那么您可能希望使用获取的关系来让两个控制器相互交谈。这可以防止对象图中的循环关系。

于 2010-06-11T14:32:43.043 回答