Ответ
В Android разработке основные способы DI:
- Ручное внедрение - простейший способ через конструктор или сеттеры:
class Car(private val engine: Engine) {
fun start() = engine.start()
}
- Dagger/Hilt - популярные библиотеки для DI:
@Module
@InstallIn(ActivityComponent::class)
object CarModule {
@Provides
fun provideEngine(): Engine = PetrolEngine()
}
- Koin - легковесная DI-библиотека:
val appModule = module {
single<Engine> { PetrolEngine() }
factory { Car(get()) }
}
- Service Locator - антипаттерн, но иногда используется:
object ServiceLocator {
fun getEngine(): Engine = PetrolEngine()
}
class Car {
private val engine = ServiceLocator.getEngine()
}
Hilt сейчас рекомендуется Google как стандарт для Android. Ручное внедрение подходит для простых случаев, Koin - для небольших проектов.
Видео-ответы
▶
Собеседование в ВТБ с код-ревью: Middle Java разработчик справился!
▶
обеседование в Oracle на Middle Java
▶
Собеседование Java Junior | Алексей Сытый vs. Максим Добрынин | Jetbulb
▶
Техническое интервью Java Developer - Артем Никулин
▶
Техническое интервью Java Developer - Дмитрий Квасников
▶
Техническое интервью Java Developer - Дмитрий Квасников
▶
Техническое интервью Java Developer - Юрий Бродинский
▶
Техническое интервью Java Developer - Юрий Бродинский