Обзор паттернов проектирования

       

Цепочка обязанностей (Chain of Responsibility) - GoF


Проблема Запрос должен быть обработан несколькими объектами.
Рекомендации Логично использовать данный паттерн, если имеется более одного объекта, способного обработать запрос и обработчик заранее неизвестен (и должен быть найден автоматически) или если весь набор обьектов, которые способны обработать запрос, должен задаваться автоматически.
Решение Связать объекты - получатели запроса в цепочку и передать запрос вдоль этой цепочки, пока он не будет обработан. "Обработчик" определяет интерфейс для обработки запросов, и, возможно, реализует связь с преемником, "КонкретныйОбработчик" обрабатывает запрос, за который отвечает, имеет доступ к своему преемнику ("КонкретныйОбработчик" направляет запрос к своему преемнику, если не может обработать запрос сам.

Преимущества Ослабляется связанность (объект не обязан "знать", кто именно обработает его запрос).
Недостатки Нет гарантий, что запрос будет обработан, поскольку он не имеет явного получателя.



Содержание раздела