Ich arbeite mit etwas Code, der einen Kind-Knoten zu seinem Elternteil im Konstruktor des Kindes hinzufügt. Der Code sieht etwa so aus:Bewährtes Verfahren: Hinzufügen eines untergeordneten Knotens zu einem übergeordneten Element im untergeordneten Konstruktor oder nicht?
Klasse:
class Node1 {
public Node1(Node1 parent, String name) {
if(parent != null) {
parent.add(this);
}
this.parent = parent;
}
private void add(Node1 child) {
children.add(child);
}
}
Verbrauch:
Node1 parent = new Node1(null, "parent");
Node1 child1 = new Node1(parent, "child1");
Node1 child2 = new Node1(parent, "child2");
Durch es auf diese Weise dem Benutzer der Klasse Umsetzung Node1
hat nicht explizit den untergeordneten Knoten hinzufügen (weniger Code) zu seinem Elternteil, und Sie haben garantiert, dass ein Kindknoten einen Elternteil hat.
Ich persönlich würde nicht so geschrieben haben, aber mehr wie folgt aus:
class Node2 {
public Node2(String name) {
}
public void add(Node2 child) {
children.add(child);
child.setParent(this);
}
}
Node2 parent = new Node2("parent");
Node2 child1 = new Node2("child1");
parent.add(child1);
Node2 child2 = new Node2("child2");
parent.add(child2);
So ist meine Frage, ist dies eine gute Idee, es zu implementieren, wie in der Klasse Node1
oder gibt es gezeigt jede Einwände, es so zu machen? Oder gibt es keinen Grund, warum man besser ist als der andere?
+1: Ziemlich viel, was ich gesagt habe. –
Dies ist ein guter Punkt, es ist besser, dies nicht in einem Konstruktor zu verwenden. –