Chain of Responsibility - пропустить запрос через все цепочки
Я просмотрел сеть, но не смог найти ответ на свой вопрос...
Допустим, у меня есть 3 цепи. Я хочу, чтобы запрос прошел все 3 цепочки (не имеет значения, может ли цепочка обработать запрос или нет). Можно ли использовать шаблон CoR для этой проблемы?
Чтобы объяснить это лучше - у меня есть список, который должен пройти через несколько наборов правил. Если он проходит 1-е правило, список остается прежним. Затем он переходит ко 2-му правилу, а 2-е правило меняет список. Измененный список переходит к 3-му правилу, он проходит, и измененный список сохраняется.
1 ответ
Решение
Хм, я не вижу контраргумента, чтобы этого не делать.
Вы можете просто объявить свой Processor
или как вы это называете:
abstract class Processor {
private Processor successor;
public void setSuccessor(Processor successor) { this.successor = successor; }
public List process(List input) {
List processed = this.internalProcess(input);
if (successor != null) { return successor.process(processed); }
return processed;
}
protected abstract List internalProcess(List input);
}
и тогда вы можете определить, например:
public class ProcessorNoProcess extends Processor {
@Override protected List internalProcess(List input) {
// do nothing
return input;
}
}
Это то, что вы спрашивали?