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

Материал из Вики ИТ мехмата ЮФУ
Версия от 07:57, 1 августа 2014; Admin (обсуждение | вклад) (Описание)

Перейти к: навигация, поиск

К основной странице курса

Другое название

Назначение

Некий запрос должен быть обработан в цепочке взаимосвязанных объектов (список, дерево - движение от листьев к корню). Объект либо обрабатывает запрос, либо передвает по цепочке следующему объекту. Если ни один из объектов не обработал запрос, то может происходить какое-то действие.

Описание

Имеется цепочка объектов, каждый хранит ссылку на следующий объект (как правило, объект более верхнего уровня) Запрос перемещается по цепочке объектов вверх пока один из них не обработает этот запрос. У объекта, отправившего запрос на обработку, отсутствует информация о том, какой объект в цепочке обработает запрос.

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

Использование

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

Реализация

Диаграмма классов

Файл:Common.png

Участники

Пример

Достоинства и недостатки

Варианты