Шаблоны проектирования цепочки Respability против декоратора - PullRequest
12 голосов
/ 15 сентября 2010

Чем шаблон цепочки ответственности отличается от шаблона декоратора ..?

Ответы [ 2 ]

12 голосов
/ 15 сентября 2010

Я обычно думаю о Декораторе как о «добавлении» к чему-то, в то время как Цепочка Ответственности больше похожа на обработку чего-либо.

При сравнении двух паттернов (помимо яблок и апельсинов) самая большая разницаЦепочка ответственности может убить цепочку в любой точке.

Думайте о декораторах как о многоуровневой единице, в которой каждый слой всегда выполняет пред / постобработку.Цепочка ответственности больше похожа на связанный список, и, как правило, 1 вещь обрабатывает обработку.

Шаблон цепочки ответственности позволяет нескольким вещам обрабатывать событие, но также дает им возможность завершить цепочку в любой точке.

7 голосов
/ 11 января 2016

Сценарий:

Подумайте о запросе на обслуживание (обычно доступ администратора к вашему ноутбуку), который должен быть одобрен вашим менеджером, директором и вице-президентом. В этом случае шаблон Decorator будет действовать так, как будто на каждом уровне будут просто комментарии от каждого из них, и, наконец, вы получите вывод. Таким образом, менеджер сказал бы «Одобрено и отправлено», Симларли директор «Хорошо одобрено и отправлено» и, наконец, вице-президент «Одобрено». И ваш окончательный результат будет комбинацией всех 3 комментариев.

Примечание: цепь не будет разорвана, независимо от того, был ли ваш запрос одобрен или отклонен.

В цепи ответственности на каждом этапе отдельное лицо имеет право одобрить или отклонить. И если на каком-либо уровне запрос отклоняется, то ваш запрос не переходит на следующий уровень, а просто заканчивается результатом. Надеюсь, это поможет:)

...