Sobes.tech
Junior

Android inkişafında Dagger nə üçün istifadə olunur?

sobes.tech Süni İntellekt

AI-dan cavab

Dagger Android tətbiqlərdə asılılıqların (Dependency Injection - DI) daxil edilməsində istifadə olunur.

Dagger istifadə etmənin əsas üstünlükləri:

  • Bağlılığın azaldılması: Ob'ektlərin yaradılmasını onların istifadəsindən ayırır, kodu daha modulyar və test etməsi asan edir.
  • Test ediləbilirin yaxşılaşdırılması: Fərdi komponentlərin testində mock və ya stubların asanlıqla yerinə qoyulmasına imkan verir.
  • Ob'ektlərin həyat dövrünün idarə olunması: Dagger ob'ektlərin yaradılmasını və yenidən istifadəsini idarə edə bilər (məsələn, @Singleton, @Reusable, @ActivityScoped kimi annotasiyalar ilə Dagger Android üçün).
  • Asılılıq qrafiki daha aydın: Dagger komponentlərin bir-birinə necə bağlı olduğunu açıq şəkildə göstərən kod yaradır.
  • Refleksiv DI çərçivələrinə nisbətən iş vaxtında daha yüksək performans: Dagger, tərtib zamanı kod yaradır, refleksiya xərclərindən qaçır.

Dagger-də əsas anlayışlar:

  • Modullar (@Module): Asılılıqları təmin edir. @Provides ilə işarələnmiş metodlar asılılığın necə yaradılacağını göstərir.
  • Komponentlər (@Component, @Subcomponent): Modulları və asılılıq tələb edən sinfləri birləşdirir. Komponentlər, daxil edilən asılılıqları almaq üçün metodlar təmin edir.
  • @Inject: Dagger-ın asılılıqları daxil etməsi üçün konstruktorlar, sahələr və ya metodlar üçün istifadə olunur.
  • Sahələr (@Scope): Dagger tərəfindən yaradılan obyektlərin həyat dövrünü idarə etməyə imkan verir.

Konstruktor vasitəsilə asılılıq daxil etmə nümunəsi:

// Asılılıq tələb edən sinif
public class MyPresenter {

    private final MyRepository repository;

    @Inject // Dagger bu konstruktoru istifadə edəcək
    public MyPresenter(MyRepository repository) {
        this.repository = repository;
    }

    // ...
}

// Asılılıq
public class MyRepository {
    // ...
}

// MyRepository təmin edən modul
@Module
public class AppModule {

    @Provides
    public MyRepository provideMyRepository() {
        return new MyRepository();
    }
}

// Komponent
@Component(modules = AppModule.class)
public interface AppComponent {
    void inject(MyActivity activity); // Activity-ə injeksiya üçün metod
}

Nəticə olaraq, Dagger daha strukturlaşdırılmış, test edilə bilən və dəstəklənən Android tətbiqlərinin yaradılmasına kömək edir.