Domain-слой должен выражать бизнес-правила через собственные сущности и контракты, не импортируя ORM, HTTP-клиенты, брокеры и конкретную БД.
Как на практике добиться того, чтобы domain-слой не зависел от инфраструктуры?
Domain-слой должен выражать бизнес-правила через собственные сущности и контракты, не импортируя ORM, HTTP-клиенты, брокеры и конкретную БД.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Domain-слой должен выражать бизнес-правила через собственные сущности и контракты, не импортируя ORM, HTTP-клиенты, брокеры и конкретную БД.
Определите порты для нужных действий, например репозиторий заказов или получение времени. Инфраструктурные адаптеры реализуют эти контракты, а composition root передаёт их приложению.
Не возвращайте из порта ORM query builder или HTTP response: иначе зависимость просачивается обратно. Доменные тесты должны работать без сети и базы с простыми реализациями портов. При этом не нужно создавать абстракцию для каждого класса: выделяйте реальные границы изменения и бизнес-инварианты, оставляя оркестрацию use case вне сущностей.