Выбор ответа Junior Внедрение зависимостей спрашивают часто обновлено
Что такое внедрение зависимостей
Вопрос
Что такое dependency injection?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Объект получает зависимости снаружи (через конструктор, свойство или параметр), а не создаёт сам. DI это принцип: ProfileViewModel(repository:) вместо let repository = ProfileRepository() внутри.
Варианты ответа
- Объект находит зависимости сам через глобальные синглтоны вроде
sharedилиinstanceв нужный момент - Компилятор автоматически создаёт все объекты и подставляет их в свойства по типу
- Объект получает зависимости снаружи (через конструктор, свойство или параметр), а не создаёт самправильный ответ
- Это аннотационная библиотека Dagger и её обёртка Hilt, без них внедрение невозможно
Разбор
DI это принцип: ProfileViewModel(repository:) вместо let repository = ProfileRepository() внутри. Так зависимость можно подменить в тестах и конфигурировать в одном месте. Dagger, Hilt, Koin, Swinject, get_it это инструменты, облегчающие DI, но внедрять можно и руками. Глобальные синглтоны как раз противоположный подход.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.