Chain of Responsibility позволяет передавать запрос по цепочке обработчиков, где каждый решает, сможет ли он обработать запрос или передаст дальше. Это создаёт гибкую, конфигурируемую и расширяемую систему без жестких условных конструкций.
Паттерн применяется для middleware, фильтров, валидации, безопасности, логирования, обработки API-запросов, интеграционных конвейеров, бизнес-правил и распределённых процессов.
CoR уменьшает связанность, позволяет добавлять новые этапы обработки без изменения существующего кода и делает архитектуру более предсказуемой и масштабируемой.
Chain of Responsibility (CoR) — один из самых полезных паттернов для архитекторов, создающих сложные конвейеры обработки данных, запросов, событий или команд. Он позволяет проектировать системы, состоящие из последовательности независимых модулей-обработчиков, каждый из которых отвечает за свою часть логики.
Главная идея паттерна
Вместо того чтобы писать:
if (...) { ... }
else if (...) { ... }
else if (...) { ... }
...
строит цепочку объектов:
handler1 → handler2 → handler3 → ...
Каждый обработчик имеет возможность:
-
обработать запрос полностью;
-
частично обработать и передать дальше;
-
отказаться от обработки и передать дальше;
-
завершить цепочку.
Таким образом логика становится модульной, конфигурируемой и легко принимает изменения.
Где используется Chain of Responsibility в архитектуре
1. API и серверная логика
Любой современный веб-сервер или API использует CoR:
-
авторизация
-
аутентификация
-
throttling
-
логирование
-
валидация
-
преобразование формата
-
обработка доменных команд
Например, middleware в:
-
ASP.NET Core
-
Spring
-
Express.js
-
FastAPI
-
NestJS
все целиком основаны на CoR.
2. Интеграционные пайплайны
ESB, ETL и iPaaS платформы используют цепочки:
-
enrichment
-
filtering
-
routing
-
transformation
-
validation
-
mapping
Архитектор может менять этапы, не ломая процесс.
3. Проверка бизнес-правил
CoR — мощная реализация rule engine уровня «бизнес-процесса»:
-
«Проверить лимит клиента»
-
«Проверить задолженности»
-
«Проверить статус документа»
-
«Проверить наличие обязательных полей»
Каждое правило — самостоятельный обработчик.
4. Workflow и оркестрация процессов
Этапы можно оформить в виде обработчиков:
-
подготовка данных
-
вызов внешнего сервиса
-
обработка результата
-
генерация события
-
логирование
Это делает бизнес-процесс легко настраиваемым.
5. Безопасность
Security pipeline:
-
проверка токена,
-
проверка ролей,
-
проверка прав доступа,
-
проверка лимитов,
-
аудит.
Добавление нового правила не ломает существующие.
Ключевые преимущества
1. Снижение связанности
Компоненты не знают ничего друг о друге — они только принимают запрос и решают, передавать ли дальше.
2. Высокая расширяемость
Нужно добавить новый этап? Просто вставляем новый обработчик.
3. Конфигурируемость
В цепочке можно менять порядок шагов, включать/выключать, создавать разные pipelines.
4. Естественная обработка ошибок
Любой обработчик может завершить цепочку и вернуть ошибку.
5. Возможность параллельной разработки
Каждый обработчик — отдельная зона ответственности.
Типичные проблемы (и решения)
1. Сложно отследить поток обработки
Решение: трассировка, correlation-id, логирование начала/конца handler.
2. Обработчики могут быть перегружены логикой
Решение: строгий SRP — один handler = одна ответственность.
3. Цепочек может быть слишком много
Решение: регистрировать и конфигурировать цепочки декларативно (yaml, xml, json).
CoR в российских учебниках
В литературе по архитектуре ИС CoR рассматривается:
-
как паттерн обработки запросов;
-
как основа middleware;
-
как механизм для архитектуры ИС на уровне подсистем и интеграций;
-
как инструмент управления сложностью бизнес-процессов;
-
как часть сервисных архитектур.
Почему архитектор обязан знать CoR
-
Основа middleware в 90% технологий.
-
Необходим для проектирования gateway, API, ETL, интеграций.
-
Лежит в основе архитектур CI/CD и DevOps-процессов.
-
Позволяет структурировать бизнес-правила.
-
Используется в security pipeline.
-
Является частью большого числа фреймворков и платформ.
Архитекторы, умеющие правильно проектировать CoR, особенно востребованы в банках, телекомах, финтехе, госсекторе и крупных ИТ-компаниях.