Каково направление зависимостей в Чистой архитектуре

Ответ

В Чистой архитектуре все зависимости направлены строго внутрь, к центральным слоям системы. Это фундаментальный принцип, известный как Правило Зависимостей (The Dependency Rule).

Это означает, что:

  • Внутренние слои (Entities, Use Cases) ничего не знают о существовании внешних слоёв.
  • Внешние слои (UI, базы данных, фреймворки) зависят от внутренних и должны соответствовать их интерфейсам (контрактам).

Почему это важно? Такой подход изолирует бизнес-логику от деталей реализации. Вы можете заменить базу данных, веб-фреймворк или UI, не затрагивая ядро системы.

Пример на Python:

# Внутренний слой (домен). Ничего не знает о внешних слоях.
class Order:
    def __init__(self, order_id: int, amount: float):
        self.id = order_id
        self.amount = amount

# Внешний слой (инфраструктура). Зависит от внутреннего слоя.
# Он импортирует и использует класс Order.
class OrderRepository:
    def save(self, order: Order): # <-- Зависимость направлена внутрь, на класс Order
        print(f"Сохранение заказа {order.id} в базу данных...")
        # db_connection.execute("INSERT INTO orders ...")

# Класс Order при этом ничего не знает о OrderRepository.