如果我有两个实体,Parent
和Child
,Parent
需要了解其所有Child
孩子,每一个Child
实例需要知道其父Parent
情况下,我该怎么做正确(在DDD等方面)?如何正确创建具有循环依赖性的两个实体?
最简单的办法是做parent.addChild(new Child(parent))
,但是这似乎丑陋 - 以及:
parent.addChild(new Child()); // Then call some setParent method on child, which needs to be public
我需要在这里使用一个工厂?如果是这样,怎么样?
谢谢
是的,但这仍然会将“父设置者”暴露给任何其他想要创建子对象的对象。我的观点是,只有父母应该能够设置一个孩子的父母。这是不合理的要求吗?还是会增加太多开销/复杂性? – 2010-11-12 09:28:18
@Piotr:当你需要让家长和孩子更深入地了解彼此时,这就是关键所在。在Java中,你可以通过将它们放在同一个包中来做到这一点。在C++中,他们只能访问对方的朋友。 (我知道在C#中必须有一个等价物,但我不知道它。) – 2010-11-12 09:31:25
如果您的目标是隐藏父设置器,则可以使用基于SWT的基于构造函数的子创建。 – Vladimir 2010-11-12 09:32:19