Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Що означає «dependency rule»?». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)**Dependency Rule** («правило залежностей») - головний принцип **Clean Architecture**, який визначає, що всі залежності спрямовані всередину, до центру архітектури: внутрішні шари (бізнес-логіка) нічого не знають про зовнішні (інфраструктуру, UI, фреймворки). **Ключове:** внутрішній шар залежить не від конкретних технологій, а лише від абстракцій (інтерфейсів), визначених усередині себе.Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)Зображення**Dependency Rule** («правило залежностей») - це головний принцип **Clean Architecture**, який визначає напрямок залежностей між шарами системи. --- ### Суть правила > **Усі залежності спрямовані всередину - до центру архітектури.** > > Внутрішні шари (бізнес-логіка) не повинні знати нічого про зовнішні (інфраструктуру, UI, фреймворки). --- ### Як це виглядає ```javascript [ Frameworks & UI ] ↓ [ Interface Adapters ] ↓ [ Use Cases ] ↓ [ Entities ] ``` - Код **зовнішнього** рівня може звертатися до **внутрішнього**. - Внутрішній не повинен залежати від зовнішнього - лише від **абстракцій (інтерфейсів)**, визначених усередині себе. --- ### Приклад - **Можна:** контролер викликає `CreateOrderUseCase`. - **Не можна:** `CreateOrderUseCase` напряму використовує `Django ORM` чи `Flask`. Натомість use case звертається до абстракції `OrderRepository`, а вже адаптер (зовнішній шар) реалізує цей інтерфейс через конкретну технологію. --- ### Навіщо потрібно 1. **Ізолювати бізнес-логіку від фреймворків.** 2. **Зробити систему незалежною від зовнішніх змін.** 3. **Полегшити тестування і заміну технологій.** --- **Підсумок:** > **Dependency Rule** - це правило, за яким залежності завжди спрямовані **від деталей до абстракцій**, > і **від зовнішнього до внутрішнього** - щоб ядро системи залишалося стабільним, чистим і незалежним.Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.