gpt4 book ai didi

oop - 如何正确创建具有循环依赖性的两个实体?

转载 作者:行者123 更新时间:2023-12-04 22:04:03 26 4
gpt4 key购买 nike

如果我有两个实体,ParentChildParent 需要知道它的所有 Child children,每个 Child 实例都需要知道其父 Parent 实例,我该如何正确地做到这一点(在 DDD 等方面)?

最简单的方法是执行 parent.addChild(new Child(parent)),但这看起来很难看 - 以及:

parent.addChild(new Child()); // Then call some setParent method on child, which needs to be public

我需要在这里使用工厂吗?如果是这样,怎么做到的?

谢谢

最佳答案

一个选择是在父类上有一个相关的实例方法。此处可能不需要静态工厂,因为您正在对现有对象进行操作并且只需要将对象与另一个对象连接起来。

public class Parent {

// ...

public Child createChild() {
Child c = new Child(this);
this.addChild(c);
return c;
}

protected void addChild(c) {
// ...
}

// ...

}

public class Child {

public Child(Parent p) {
// ...
this.addParent(p);
}

protected addParent(Parent p) {
// ...
}
}

如果 Child 构造函数需要参数,您可以将它们传递给 createChild 方法。

关于oop - 如何正确创建具有循环依赖性的两个实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4163079/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com