Архитектура Роберта Мартина Слои от внешнего уровня к внутреннему: Presentation (UI) Application (Use Cases) Domain (Бизнес-логика) Infrastructure (Сторонние сервисы, БД) Domain — центральное ядро, не зависящее от внешних слоёв Он опирается только на собственные правила и бизнес-требования Зависимости от UI, БД и фреймворков отсутствуют Это повышает устойчивость и тестируемость системы Практическая ценность — изменения и масштабирование становятся проще
Какие слои есть в Чистой архитектуре и от чего зависит domain?
Архитектура Роберта Мартина Слои от внешнего уровня к внутреннему: Presentation (UI) Application (Use Cases) Domain (Бизнес-логика) Infrastructure (Сторонние сервисы, БД) Domain — центральное ядро, не зависящее от…
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Какие слои есть в Чистой архитектуре и от чего зависит domain?
- Архитектура Роберта Мартина
- Слои от внешнего уровня к внутреннему:
- Presentation (UI)
- Application (Use Cases)
- Domain (Бизнес-логика)
- Infrastructure (Сторонние сервисы, БД)
- Domain — центральное ядро, не зависящее от внешних слоёв
- Он опирается только на собственные правила и бизнес-требования
- Зависимости от UI, БД и фреймворков отсутствуют
- Это повышает устойчивость и тестируемость системы
- Практическая ценность — изменения и масштабирование становятся проще
Подробный ответ
Основной ответ
Чистая архитектура (Clean Architecture) — архитектурный паттерн Роберта Мартина, в котором система разделяется на независимые слои, а зависимости направляются к центру, то есть к бизнес-логике. В ней выделяют следующие основные слои:
- Entities (Сущности, доменная модель) — объекты и правила бизнеса. Они являются абстрактными и не зависят от внешних слоёв.
- Use Cases (Применение, бизнес-правила приложения) — сценарии использования, реализующие прикладные правила с опорой на сущности.
- Interface Adapters (Адаптеры интерфейсов) — преобразуют данные из формата use cases в представление, подходящее внешним системам: UI, базам данных и внешним API.
- Frameworks & Drivers (Внешние системы) — конкретные технические детали, включая UI, базы данных, веб-фреймворки, устройства и прочие внешние компоненты.
Слой domain (домен), включающий entities и use cases, должен оставаться независимым от внешних слоёв. Зависимости направлены внутрь: инфраструктура и UI используют бизнес-логику, но domain не зависит от них. Поэтому домен не связан ни с UI, ни с базой данных, ни с frameworks.
Ключевые моменты
- Dependency Rule: Направление зависимостей всегда обращено внутрь, поэтому domain как ядро системы остаётся изолированным.
- Инверсия зависимостей: Для связи с внешним миром определяют интерфейсы, например репозитории, а реализуют их уже внешние слои.
- Тестируемость: Изолированный домен проще покрывать юнит-тестами, поскольку у него меньше связанных зависимостей.
Практический контекст
В проектах с Чистой архитектурой core бизнес-логики — доменные сущности и use cases — может находиться в отдельных модулях, например в .NET — class libraries. Такой код не зависит ни от БД (Entity Framework), ни от UI (Angular, React), поэтому инфраструктуру можно менять независимо от логики. Например, при переходе с REST API на GraphQL достаточно изменить слой adapters и frameworks.