HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-03-10
1 <p>Теги: chain of responsibility, паттерны, шаблоны проектирования, цепочка обязанностей</p>
1 <p>Теги: chain of responsibility, паттерны, шаблоны проектирования, цепочка обязанностей</p>
2 <p><strong>Цепочка обязанностей</strong>(Chain of Responsibility) представляет собой<strong>поведенческий шаблон проектирования</strong>, который позволяет организовать в системе уровни ответственности. Как это выглядит на практике?</p>
2 <p><strong>Цепочка обязанностей</strong>(Chain of Responsibility) представляет собой<strong>поведенческий шаблон проектирования</strong>, который позволяет организовать в системе уровни ответственности. Как это выглядит на практике?</p>
3 <p>Давайте представим, что у нас есть 3 три платежных карточки (метода): A, B и C, которые объединены одним банковским счетом. На каждой карточке -- разная сумма, на А -- $100, на B -- $300, на С -- $1000. Мы решили, что пока не потратим деньги с первой карточки (А), не будем трогать (B), ну а третью (C) вообще оставим на черный день. Итак, мы делаем заказ товара стоимостью $210. Так как существует цепочка обязанностей, первым на возможность оплаты будет проверена карточка A (иными словами, отработает метод А). Если оплата пройдет, цепь разорвется, а в случае неудачи запрос поступит на карточку B (перейдет к методу B). В нашем случае A, B и C представляют собой звенья цепи, а все вышеописанное -- не что иное, как<strong>цепочка обязанностей</strong>.</p>
3 <p>Давайте представим, что у нас есть 3 три платежных карточки (метода): A, B и C, которые объединены одним банковским счетом. На каждой карточке -- разная сумма, на А -- $100, на B -- $300, на С -- $1000. Мы решили, что пока не потратим деньги с первой карточки (А), не будем трогать (B), ну а третью (C) вообще оставим на черный день. Итак, мы делаем заказ товара стоимостью $210. Так как существует цепочка обязанностей, первым на возможность оплаты будет проверена карточка A (иными словами, отработает метод А). Если оплата пройдет, цепь разорвется, а в случае неудачи запрос поступит на карточку B (перейдет к методу B). В нашем случае A, B и C представляют собой звенья цепи, а все вышеописанное -- не что иное, как<strong>цепочка обязанностей</strong>.</p>
4 <p>Схожим образом работает и банкомат:</p>
4 <p>Схожим образом работает и банкомат:</p>
5 <p>Таким образом, цепочка обязанностей позволяет создавать<strong>цепочки объектов</strong>. То есть запрос поступит с одного конца и пройдет через каждый объект, пока не обнаружит подходящий обработчик.</p>
5 <p>Таким образом, цепочка обязанностей позволяет создавать<strong>цепочки объектов</strong>. То есть запрос поступит с одного конца и пройдет через каждый объект, пока не обнаружит подходящий обработчик.</p>
6 <p>Но давайте теперь посмотрим, как это выглядит в коде. Приведем пример с банковскими счетами. Мы имеем базовый<strong>Account</strong>, где находится логика соединения счетов цепью и определенные счета:</p>
6 <p>Но давайте теперь посмотрим, как это выглядит в коде. Приведем пример с банковскими счетами. Мы имеем базовый<strong>Account</strong>, где находится логика соединения счетов цепью и определенные счета:</p>
7 <p>На самом деле, осталось лишь приготовить цепь, применяя вышеобъявленные звенья (Bank, Paypal, Bitcoin):</p>
7 <p>На самом деле, осталось лишь приготовить цепь, применяя вышеобъявленные звенья (Bank, Paypal, Bitcoin):</p>
8 <p><em>По материалам статьи<a>"Design Patterns for Humans"</a></em>.</p>
8 <p><em>По материалам статьи<a>"Design Patterns for Humans"</a></em>.</p>
9  
9