Сколько Dagger компонентов может быть в приложении

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

Ответ

Количество Dagger компонентов в приложении не ограничено и зависит от архитектуры. Обычно используют:

  1. Один компонент – для простых приложений (не рекомендуется для больших проектов).
  2. Множество компонентов – для модульности, разделения зависимостей (например, 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
    }
}

Лучшие практики:

  • Разделять компоненты по функциональности/модулям.
  • Использовать сабкомпоненты или зависимости для связи.
  • Избегать гигантских компонентов.