Dependency Injection передаёт объекту его зависимости извне вместо создания их внутри. Это уменьшает связанность и позволяет заменять реализацию, например реальную БД на тестовый репозиторий.
Поясните паттерн Dependency Injection и какую проблему он решает.
Dependency Injection передаёт объекту его зависимости извне вместо создания их внутри. Это уменьшает связанность и позволяет заменять реализацию, например реальную БД на тестовый репозиторий.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Dependency Injection передаёт объекту его зависимости извне вместо создания их внутри. Это уменьшает связанность и позволяет заменять реализацию, например реальную БД на тестовый репозиторий.
Пример: сервис заказа получает через конструктор платёжный клиент и хранилище, а не создаёт их самостоятельно. Бизнес-логика зависит от понятного интерфейса, а сборка конкретных объектов находится на границе приложения. Контейнер DI может автоматизировать эту сборку, но не является обязательной частью паттерна. Важно сохранять явные зависимости: глобальный service locator, из которого объект сам достаёт всё необходимое, скрывает их и ухудшает тестируемость.