Я работаю с некоторым кодом, который добавляет дочерний узел в его родительский элемент в конструкторе child. Код выглядит примерно так:Лучшая практика. Добавление дочернего узла в родительский элемент в дочернем конструкторе или нет?
Класс:
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);
}
}
Использование:
Node1 parent = new Node1(null, "parent");
Node1 child1 = new Node1(parent, "child1");
Node1 child2 = new Node1(parent, "child2");
Реализуя это таким образом, пользователю класса Node1
не должны явно добавить дочерний узел (меньше кода) для его родителя, и вы гарантировали, что дочерний узел имеет родителя.
лично я не написал бы это так, но больше похоже на следующее:
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);
Так что мой вопрос, это хорошая идея, чтобы реализовать его, как показано в классе Node1
или есть какой-либо возражения, чтобы сделать это таким образом? Или нет аргументов, почему один лучше другого?
+1: Довольно много, что я бы сказал. –
Это хороший момент, лучше не использовать это в конструкторе. –