Шаблон "Цепочка ответственности" (Chain of Responsibility)

max аватар
126

Определение

Позволяет множеству объектов управлять запросами, даже не зная друг друга.  Передавать запрос к цепочке объектов необходимо до того, как они отлавливаются.

 

Где использовать и преимущества:

 

  • Один запрос должен обрабатываться более, чем одним объектом.
  • Неизвестно, какой объект должен обрабатывать запрос, возможно более чем один объект обработает его автоматически
  • Сокращение связей
  • Удобный в обработке запросов
Пример:
Java Servlet filter framework является примером шаблона "цепочка ответственности". Заметьте, что chain.doFilter() - это метод, который должен быть вызван для того, чтобы сделать передачу цепочки. Если подкласс пропускает его, вся цепочка останавливается или блокируется.
Java exception handling - другой пример цепочки ответственности. Когда происходит ошибка,  вызов исключения будет искать обрабатывающий класс. Если такой не найден, будет вызван класс Exception для порождения исключения, в противном случае обрабатывающий класс отловит его.
Вот небольшой пример для демонстрации работы шаблона.  Для того, чтобы потратить деньги компании, вам необходимо получить разрешение от вашего начальника, или от начальника начальника. Скажем, цепочка такая:
Manager -> Director -> Vice President -> President.
Следующий код проверяет, кто ответственный за  подтверждение ваших затрат:

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

хороший пример!

пример  - копи/паст из англоязычной википедии ... ничего особенного

Согласна

Отправить комментарий

CAPTCHA
Чтобы оставить комментарий, введите пожалуйста код, изображенный на картинке
Image CAPTCHA
Введите символы, изображенные на картинке