Sto lavorando con un codice che aggiunge un nodo figlio al suo genitore nel costruttore del figlio. Il codice simile a questa:Procedura consigliata: aggiungere un nodo figlio a un genitore nel costruttore figlio o no?
Classe:
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);
}
}
Usage:
Node1 parent = new Node1(null, "parent");
Node1 child1 = new Node1(parent, "child1");
Node1 child2 = new Node1(parent, "child2");
Implementando questo modo l'utente della Classe Node1
non deve aggiungere esplicitamente il nodo figlio (meno codice) al suo genitore e hai garantito che un nodo figlio ha un genitore.
io personalmente non avrei scritto così, ma più simile al seguente:
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);
Quindi la mia domanda è, è una buona idea per la sua attuazione, come mostrato nella classe Node1
o ci sono qualsiasi obiezioni a farlo in questo modo? O non c'è nessuna argomentazione sul perché uno sia migliore dell'altro?
+1: Più o meno quello che avrei detto. –
Questo è un buon punto, è meglio non usarlo in un costruttore. –