Шаблон проектирования Chain of Responsibility | OTUS >
Скидки 5% на курсы из спецкаталога
Скидки 5%
Действуют до 21 июня. Дальше скидок не будет…
Действуют до 21 июня. Дальше скидок не будет…
Перейти

Шаблон проектирования Chain of Responsibility

Цепочка обязанностей (Chain of Responsibility) представляет собой поведенческий шаблон проектирования, который позволяет организовать в системе уровни ответственности. Как это выглядит на практике?

3-1801-769806.png

Давайте представим, что у нас есть 3 три платежных карточки (метода): A, B и C, которые объединены одним банковским счетом. На каждой карточке -- разная сумма, на А -- $100, на B -- $300, на С -- $1000. Мы решили, что пока не потратим деньги с первой карточки (А), не будем трогать (B), ну а третью (C) вообще оставим на черный день. Итак, мы делаем заказ товара стоимостью $210. Так как существует цепочка обязанностей, первым на возможность оплаты будет проверена карточка A (иными словами, отработает метод А). Если оплата пройдет, цепь разорвется, а в случае неудачи запрос поступит на карточку B (перейдет к методу B). В нашем случае A, B и C представляют собой звенья цепи, а все вышеописанное -- не что иное, как цепочка обязанностей.

Схожим образом работает и банкомат:

Chain_of_Responsibility_Design_Pattern_1-1801-67ba3f.JPG

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

69ece69f35933c001375ccda0640973b_1-1801-6158f7.jpg

Но давайте теперь посмотрим, как это выглядит в коде. Приведем пример с банковскими счетами. Мы имеем базовый Account, где находится логика соединения счетов цепью и определенные счета:

1-1801-bb6272.png

На самом деле, осталось лишь приготовить цепь, применяя вышеобъявленные звенья (Bank, Paypal, Bitcoin):

2-1801-38b5ee.png

По материалам статьи «Design Patterns for Humans».

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться
Популярное
Сегодня тут пусто