构建 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

我试过的

//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 实现之一(ArrayListLinkedList 等)会更典型。