Какое различие существует между компонентами и модулями в Dagger?

В Dagger модули (Modules) — это классы, которые предоставляют зависимости через методы, помеченные аннотацией @Provides. Они описывают, как создавать объекты, необходимые для внедрения.

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

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

В Dagger модули (Modules) — это классы, которые предоставляют зависимости через методы, помеченные аннотацией @Provides. Они описывают, как создавать объекты, необходимые для внедрения.

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

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

В Dagger модули (Modules) — это классы, которые предоставляют зависимости через методы, помеченные аннотацией @Provides. Они описывают, как создавать объекты, необходимые для внедрения.

Компоненты (Components) — это интерфейсы, которые связывают поставщиков зависимостей (модули) с точками внедрения (например, полями или конструкторами). Компонент отвечает за создание и предоставление объектов, определённых в модулях, и управляет временем жизни этих объектов.

Проще говоря:

  • Модуль — это фабрика, которая знает, как создавать зависимости.
  • Компонент — это мост между модулями и классами, куда эти зависимости внедряются.

Пример:

@Module
class NetworkModule {
    @Provides
    Retrofit provideRetrofit() {
        return new Retrofit.Builder().baseUrl("https://api.example.com").build();
    }
}

@Component(modules = NetworkModule.class)
interface AppComponent {
    void inject(MainActivity activity);
}

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

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

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

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