Как реорганизовать следующий код:Refactor рекурсивные модификации дерева
class ModifyTree{
public void doActionsOnTree(Tree tree) {
rAction1(tree.getRoot());
rAction2(tree.getRoot());
}
private void action1(Node node) {
// do something with node;
}
private void action2 (Node node) {
// do something with node
}
private void rAction1(Node node) {
action1(node);
for(Node nodeIterator : node.getChildren())
rAction1(nodeIterator);
}
private void rAction2(Node node) {
action2(node);
for(Node nodeIterator : node.getChildren())
rAction2(nodeIterator);
}
}
Методы rAction1()
и rAction2()
выглядит очень похоже. Есть ли способ не повторять код в этом случае?
Примерно тот же ответ, что и у меня, но вы правильно сказали, что это шаблон посетителя :) –
@ AleksanderBlomskøld - В самом деле, примерно такой же ответ. Вы были быстрее об этом, так что +1 к вам. :) Я думаю, что командный шаблон также вполне подходит для этого. –
Это так просто. Спасибо вам обоим! – WojciechKo