В шаблоне «Цепочка ответственности (COR)» мы создаем цепочку обработчиков.Передайте запрос первому в цепочке.Он пытается справиться с этим.Если это невозможно, он пересылает запрос следующему в цепочке и так далее.Например.Handler1 = новый ConcreteHandler1 ();handler1.handle
public class ConcreteHandler1
public void handle() {
if(can handle)
handle the request
else
concreteHandler2.handle();
}
Разве мы не можем просто создать список обработчиков и выполнить то же самое в цикле for?
for(Handler handler : handlers) {
if(handler can handle the request)
handle
}
Мы создадим список обработчиков так же, как мысоздать цепочку.
- Каким образом это для цикла уступает COR?Разве COR - это не просто перебор?
- Существуют ли сценарии, в которых цикл for лучше, а в других, где COR лучше?В вашем ответе - было бы здорово, если бы вы сначала ответили на эти вопросы с помощью Да / Нет, прежде чем углубляться в подробное объяснение.
Я знаю, что по этому вопросу уже есть пост - Что такоепреимущества цепочки ответственности перед списками классов? но это не проясняет мои сомнения.