Sobes.tech
Junior — Middle

Jaka jest różnica między komponentami a modułami w Dagger?

sobes.tech AI

Odpowiedź od AI

В 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);
}