2010-06-11 43 views
0

我有一个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提供的信息是没有意义的)。

回答

0

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

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