Наглядный пример паттерна «Цепочка ответственности»

Цель

Согласно GoF, цель шаблона цепочки ответственности состоит в том, чтобы:

«Избегайте связывания отправителя запроса с его получателем, давая возможность более чем одному объекту обработать запрос. Объедините получающие объекты в цепочку и передайте запрос по цепочке, пока объект не обработает его ».

Пример

Цепочка ответственности используется для разделения отправителей и получателей, давая нескольким объектам возможность обработать запрос. При использовании цепочки ответственности каждый объект поддерживает указатель на объект-преемник в цепочке.

Конечный получатель запроса называется неявным получателем, поскольку получатель неизвестен на момент отправки запроса. Это не определено явно. Каждый объект в цепочке ответственности соответствует общему интерфейсу, называемому Обработчик, который определяет интерфейс для обработки запросов.

Некоторые лакомые кусочки

Доставка не гарантируется

Одним из потенциальных недостатков использования цепочки ответственности является то, что, поскольку получатель запроса неизвестен (неявный получатель), возможно, что ничто не выполняет запрос. При цепочке ответственности доставка запроса не гарантируется.

Углубляясь

Шаблон Цепочка ответственности - один из многих ценных шаблонов проектирования. Чтобы узнать больше, ознакомьтесь с основополагающей работой по шаблонам дизайна: Книга шаблонов дизайна GOF.