Выбор ответа Junior Внедрение зависимостей спрашивают часто обновлено

Что такое внедрение зависимостей

Вопрос

Что такое dependency injection?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Объект получает зависимости снаружи (через конструктор, свойство или параметр), а не создаёт сам. DI это принцип: ProfileViewModel(repository:) вместо let repository = ProfileRepository() внутри.

Варианты ответа

  1. Объект находит зависимости сам через глобальные синглтоны вроде shared или instance в нужный момент
  2. Компилятор автоматически создаёт все объекты и подставляет их в свойства по типу
  3. Объект получает зависимости снаружи (через конструктор, свойство или параметр), а не создаёт самправильный ответ
  4. Это аннотационная библиотека Dagger и её обёртка Hilt, без них внедрение невозможно

Разбор

DI это принцип: ProfileViewModel(repository:) вместо let repository = ProfileRepository() внутри. Так зависимость можно подменить в тестах и конфигурировать в одном месте. Dagger, Hilt, Koin, Swinject, get_it это инструменты, облегчающие DI, но внедрять можно и руками. Глобальные синглтоны как раз противоположный подход.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.