构建 parent 和子 类 引用
Structuring parent and sub classes references
我想创建多个parent,每个parent包含多个children。
问题是每组 children 我只想要一个 parent,每个 children 都必须知道他们的 parent,反之亦然。一组 children 共享 parent 的一个实例 - 它的方法和变量。因此,如果 children 之一更改 parent 变量,则所有其余 children 将获得相同的结果。
想法
http://oi57.tinypic.com/6ohh7n.jpg
我试过的
- 使用继承,但这导致为每个 child 创建单独的 parent object,这是我不想要的。
- parent 在child 构造函数中引用注入,像这样
//reference injection
class Parent{
public Parent(){
children = new Child[10];
for(int i = 0; i < children.length; i++){
children[i] = new Child(this);
}
}
Child[] children;
}
class Child{
public Child(Parent parent){
this.parent = parent;
}
private Parent parent;
public Parent getParent(){return parent;}
}
Parent parent = new Parent();
Child child1 = new Child(parent);
Child child2 = new Child(parent);
Child child3 = new Child(parent);
但这感觉不太可靠,因为我必须在构造函数中传递 this,感觉这不是一个好方法。
执行此操作的最佳方法是什么?
非常感谢。
"Best" 问题通常是 off-topic 用于 Stack Overflow,但就其价值而言,您显示代码的方法是完全正常的,是执行此操作的标准方法。要让 children 知道他们的 parent 是谁,您必须告诉他们他们的 parent 是谁。因此,在某个阶段向他们传递对他们 parent 的引用是您最有可能这样做的方式。如果您在 parent 实例方法中创建 children,则传入 this
是完全合适的。
分开:
So if one of the children change parent variable...
如果 parent 中 children 的数量可能不同,数组可能不是存储它们的最佳方式。 List
实现之一(ArrayList
、LinkedList
等)会更典型。
我想创建多个parent,每个parent包含多个children。 问题是每组 children 我只想要一个 parent,每个 children 都必须知道他们的 parent,反之亦然。一组 children 共享 parent 的一个实例 - 它的方法和变量。因此,如果 children 之一更改 parent 变量,则所有其余 children 将获得相同的结果。
想法
http://oi57.tinypic.com/6ohh7n.jpg
我试过的
- 使用继承,但这导致为每个 child 创建单独的 parent object,这是我不想要的。
- parent 在child 构造函数中引用注入,像这样
//reference injection
class Parent{
public Parent(){
children = new Child[10];
for(int i = 0; i < children.length; i++){
children[i] = new Child(this);
}
}
Child[] children;
}
class Child{
public Child(Parent parent){
this.parent = parent;
}
private Parent parent;
public Parent getParent(){return parent;}
}
Parent parent = new Parent();
Child child1 = new Child(parent);
Child child2 = new Child(parent);
Child child3 = new Child(parent);
但这感觉不太可靠,因为我必须在构造函数中传递 this,感觉这不是一个好方法。
执行此操作的最佳方法是什么?
非常感谢。
"Best" 问题通常是 off-topic 用于 Stack Overflow,但就其价值而言,您显示代码的方法是完全正常的,是执行此操作的标准方法。要让 children 知道他们的 parent 是谁,您必须告诉他们他们的 parent 是谁。因此,在某个阶段向他们传递对他们 parent 的引用是您最有可能这样做的方式。如果您在 parent 实例方法中创建 children,则传入 this
是完全合适的。
分开:
So if one of the children change parent variable...
如果 parent 中 children 的数量可能不同,数组可能不是存储它们的最佳方式。 List
实现之一(ArrayList
、LinkedList
等)会更典型。