Каковы основные отличия между аннотациями SubComponents и Component в Dagger?

Component:

Короткий ответ

Что ответить на собеседовании

Component:

Подробный разбор

Ответ с пояснениями

@Component  
interface AppComponent {  
    // ...  
}  
  
@Subcomponent  
interface UserComponent {  
    // ...  
}  
  
// Пример использования Subcomponent в AppComponent  
@Component(modules = AppModules.class)  
interface AppComponent {  
    UserComponent userComponent(); // Добавление фабричного метода  
}  

Component:

  • Самодостаточный граф зависимостей.
  • Является корневым компонентом или может быть зависимостью для других компонентов (с помощью dependencies).
  • Создается с помощью фабричного метода (create() или builder) в аннотированном интерфейсе.

Subcomponent:

  • Расширяет граф родительского компонента.
  • Имеет доступ ко всем зависимостям, предоставляемым родительским компонентом.
  • Не имеет своих зависимостей (через dependencies).
  • Создается родительским компонентом через фабричный метод.
  • Позволяет создавать более модульные и управляемые графы.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку