模型 - 控制器循环参考/设计问题

时间:2010-06-11 02:14:07

标签: core-data cyclic-reference objective-c

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

现在的问题是XGroupController需要与XController进行交互,只需将XGroupController传递给XGroup进行观察,然后从X实体获取XControllers就可以了。

所以问题是:将(弱的,避免保留周期)引用存储到实体中的控制器是一个好主意吗?它只是感觉有点“错误”。还有另一种设计模式吗?

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

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

我必须再次为模型处理得很好的东西做工作。 如果我不得不再次处理控制器层中的组,它是否会使模型层变得毫无意义?

在Loc /复杂性方面的差异是如此重要,我错过了什么? (也许我应该补充一点,在我的场景中,存储XGroupController需要通过模型提供给XController的信息是没有意义的。)

1 个答案:

答案 0 :(得分:0)

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

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