Ответ
Количество Dagger компонентов в приложении не ограничено и зависит от архитектуры. Обычно используют:
- Один компонент – для простых приложений (не рекомендуется для больших проектов).
- Множество компонентов – для модульности, разделения зависимостей (например,
AppComponent,AuthComponent,FeatureComponent).
Пример иерархии:
@Singleton
@Component(modules = [AppModule::class])
interface AppComponent {
fun authComponent(): AuthComponent.Factory
}
@Component(dependencies = [AppComponent::class])
interface AuthComponent {
@Component.Factory
interface Factory {
fun create(appComponent: AppComponent): AuthComponent
}
}
Лучшие практики:
- Разделять компоненты по функциональности/модулям.
- Использовать сабкомпоненты или зависимости для связи.
- Избегать гигантских компонентов.