Выбор ответа Middle DI: Hilt и Koin обновлено
DI и Service Locator
Вопрос
Чем внедрение зависимостей отличается от Service Locator?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: При DI зависимости передают снаружи, при Service Locator класс берёт их у реестра. Service Locator скрывает зависимости внутри класса (val api = Locator.get<Api()), и чтобы протестировать класс, надо настраивать глобальный реестр.
Варианты ответа
- Ничем: это одно и то же, разница только в названии библиотеки и синтаксисе
- Service Locator работает при компиляции, а DI разрешает зависимости в рантайме
- DI нельзя использовать без библиотеки вроде Hilt, а Service Locator пишут вручную
- При DI зависимости передают снаружи, при Service Locator класс берёт их у реестраправильный ответ
Разбор
Service Locator скрывает зависимости внутри класса (val api = Locator.get<Api>()), и чтобы протестировать класс, надо настраивать глобальный реестр. При DI класс ничего не знает о том, откуда берутся зависимости. Koin позволяет оба стиля, Hilt ориентирован на DI. Ручной DI без библиотек вполне возможен, а Service Locator как раз работает в рантайме.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.