Pracuję z kodem, który dodaje węzeł podrzędny do rodzica w konstruktorze dziecka. Kod wygląda mniej więcej tak:Najlepsza praktyka: Dodawanie węzła potomnego do obiektu nadrzędnego w konstruktorze podrzędnym, czy nie?
Klasa:
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);
}
}
Zastosowanie:
Node1 parent = new Node1(null, "parent");
Node1 child1 = new Node1(parent, "child1");
Node1 child2 = new Node1(parent, "child2");
Poprzez wdrożenie go w ten sposób użytkownikowi klasy Node1
nie trzeba jawnie dodać węzeł podrzędny (mniej kodu) do rodzica i masz gwarancję, że węzeł podrzędny ma rodzica.
Ja osobiście nie napisałby to w ten sposób, ale bardziej jak następuje:
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);
Więc moje pytanie brzmi, czy jest to dobry pomysł, aby go realizować w sposób pokazany w klasie Node1
czy są jakieś sprzeciwy, aby zrobić to w ten sposób? Czy też nie ma argumentu, dlaczego jeden jest lepszy od drugiego?
+1: Prawie co bym powiedział. –
To jest dobra uwaga, lepiej nie używać tego w konstruktorze. –