Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Як структуровані рівні в чистій архітектурі?». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)У **Clean Architecture** рівні (шари) вибудувані у концентричні кола, де кожен внутрішній шар незалежний від зовнішнього, а залежності завжди спрямовані всередину, до бізнес-логіки. **Ключове:** рівні структуровані від абстрактного до конкретного - Entities → Use Cases → Interface Adapters → Frameworks, і чим ближче шар до центру, тим стабільніший його код.Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)ЗображенняУ **Clean Architecture** рівні (або шари) вибудувані у **концентричні кола**, де кожен внутрішній шар незалежний від зовнішнього. Залежності завжди спрямовані **всередину - до бізнес-логіки**, а не назовні. --- ### 1. **Entities (Сутності / Domain Layer)** **Що це:** Ядро системи - бізнес-моделі та правила, що не залежать від технологій. **Містить:** - бізнес-об'єкти (`User`, `Order`, `Invoice`), - інваріанти та бізнес-правила (`calculateTotal()`, `validatePayment()`). **Не знає про:** фреймворки, бази, інтерфейс, мережу. *Приклад:* ```python class Order: def calculate_total(self): return sum(item.price for item in self.items) ``` --- ### 2. **Use Cases / Application Layer** **Що це:** Сценарії використання системи - прикладна логіка, як бізнес-правила застосовуються в конкретних процесах. **Містить:** - інтерактори (`CreateOrder`, `RegisterUser`), - координатори бізнес-процесів, - інтерфейси до репозиторіїв і шлюзів. *Приклад:* ```python class CreateOrder: def __init__(self, order_repo, payment_service): ... def execute(self, order_data): order = Order(order_data) order.validate() self.order_repo.save(order) ``` --- ### 3. **Interface Adapters / Adapter Layer** **Що це:** Шар, який перетворює дані із зовнішнього світу у формат, зрозумілий бізнес-логіці. **Містить:** - контролери (REST, gRPC), - презентери, серіалізатори, - реалізації інтерфейсів репозиторіїв, API тощо. *Приклад:* ```python class OrderController: def post(self, request): use_case = CreateOrder(OrderRepo(), PaymentService()) return use_case.execute(request.data) ``` --- ### 4. **Frameworks & Drivers / Infrastructure Layer** **Що це:** Найзовнішній шар - конкретні технології та інструменти: фреймворки, бази, UI, API, сервери. **Містить:** - Django/Spring, PostgreSQL, Redis, Kafka, Flask тощо. - інфраструктурні залежності та конфігурації. --- ### 5. **Правило залежності** > Код **зовнішнього** рівня може знати про **внутрішній**, > але внутрішній рівень **ніколи не повинен залежати** від зовнішнього. --- **Підсумок:** > Рівні Clean Architecture структуровані від абстрактного до конкретного: > **Entities → Use Cases → Interface Adapters → Frameworks.** > > Чим ближче шар до центру, тим стабільніший і довговічніший його код.Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.