Цепочка обязанностей (англ. Chain of Responsibility) - относится к классу поведенческих шаблонов.
Служит для ослабления связи между отправителем и получателем запроса.
При этом сам по себе запрос может быть произвольным.
Шаблон не просто так называется цепочкой обязанностей. По сути, это набор обработчиков, которые по очереди получают
запрос, а затем решают, обрабатывать его или нет. Если запрос не обработан, то он передается дальше по цепочке.
Если же он обработан, то шаблон сам решает передавать его дальше или нет.
Нам нужно подписать какой-то документ(Contract). У него есть какая-то важность(Contract->importance),
от которой зависит в каком департаменте(Department) будет подписан документ.
Последний департамент в цепочке всегда обработает документ.
Применение:
фреймворк для записи журналов, где каждый элемент цепи самостоятельно принимает решение,
что делать с сообщением для логирования;
фильтр спама;
кеширование: первый объект является экземпляром, к примеру, интерфейса Memcached.
Если запись в кеше отсутствует, вызов делегируется интерфейсу базы данных;
Yii Framework: CFilterChain — это цепочка фильтров действий контроллера.
Точка вызова передаётся от фильтра к фильтру по цепочке и только если все фильтры скажут “да”,
действие в итоге может быть вызвано.