Выбор ответа Middle DI: Hilt и Koin обновлено

DI и Service Locator

Вопрос

Чем внедрение зависимостей отличается от Service Locator?

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

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

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

Коротко

Правильный ответ: При DI зависимости передают снаружи, при Service Locator класс берёт их у реестра. Service Locator скрывает зависимости внутри класса (val api = Locator.get<Api()), и чтобы протестировать класс, надо настраивать глобальный реестр.

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

  1. Ничем: это одно и то же, разница только в названии библиотеки и синтаксисе
  2. Service Locator работает при компиляции, а DI разрешает зависимости в рантайме
  3. DI нельзя использовать без библиотеки вроде Hilt, а Service Locator пишут вручную
  4. При DI зависимости передают снаружи, при Service Locator класс берёт их у реестраправильный ответ

Разбор

Service Locator скрывает зависимости внутри класса (val api = Locator.get<Api>()), и чтобы протестировать класс, надо настраивать глобальный реестр. При DI класс ничего не знает о том, откуда берутся зависимости. Koin позволяет оба стиля, Hilt ориентирован на DI. Ручной DI без библиотек вполне возможен, а Service Locator как раз работает в рантайме.

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

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