intermediate
Dependency Injection
Передавайте collaborators извне, чтобы policy code оставался testable и не hard-code infrastructure choices.
Dependency injection передаёт collaborators извне — конструкторы, factories, containers — чтобы policy code не hard-code инфраструктуру. Позволяет подменять БД, clocks и HTTP clients в тестах и окружениях. Constructor injection для обязательных зависимостей и явные lifetimes.
На интервью: DI vs service locator и global singletons. Scoped vs singleton lifetimes в web requests.
Типовые ошибки: container resolve в domain code; циклические providers; десять optional dependencies вместо пересмотра границ.
Компромисс — гибкость против сложности: знайте, когда достаточно более простого пути.
Чеклист:
- Интерфейсы на границах policy.
- Composition root при старте приложения.
- Lifetime в регистрации каждого service.
- Тесты с manual doubles.