Работал ли с DI

«Работал ли с DI» — вопрос из категории DI, который задают на 24% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, работал с Dependency Injection (DI) на Android, в основном через Dagger/Hilt и Koin.

Dagger/Hilt – стандартный DI-фреймворк от Google. Пример:

@HiltAndroidApp  
class MyApp : Application()  

@Module  
@InstallIn(SingletonComponent::class)  
object AppModule {  
    @Provides  
    fun provideRepository(): Repository = RepositoryImpl()  
}  

@AndroidEntryPoint  
class MainActivity : AppCompatActivity() {  
    @Inject lateinit var repository: Repository  
}  

Koin – легковесная альтернатива:

val appModule = module {  
    single<Repository> { RepositoryImpl() }  
}  

class MyApp : Application() {  
    override fun onCreate() {  
        super.onCreate()  
        startKoin { modules(appModule) }  
    }  
}  

Плюсы DI: тестируемость, модульность, чистая архитектура. Минусы: кривая обучения (Dagger), оверхед для маленьких проектов.