Sobes.tech
Middle+

Dagger 1 və Dagger 2 arasındakı fərq nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Əsas fərq odur ki, Dagger 2 kodu tərtib zamanı yaradır, Dagger 1 isə işləmə zamanı refleksiya (reflection) üzərində dayanır.

Dagger 2-nin Dagger 1-ə nisbətən üstünlükləri:

  • Performans: Refleksiyanın olmaması, işləmə vaxtını daha sürətli edir.
  • Xətaların tapılması: Konfiqurasiya xətaları tərtib zamanı görünür, işləmə zamanı yox.
  • Etibarlılıq: Yaradılan kod daha proqnozlaşdırılandır və test edilə bilər.
  • Gizli xətaların olmaması: Refleksiya, yalnız müəyyən şərtlərdə ortaya çıxan xətaları gizləyə bilər.

Dagger 1-də @Module@Inject annotasiyaları, eləcə də @ObjectGraph sinifləri istifadə olunurdu.

Dagger 2-də də @Module@Inject istifadə olunur, lakin əsas mexanizm @Component-dir, bu, injeksiya edilən obyektlər üçün fabrik kimi fəaliyyət göstərir və Dagger tərəfindən yaradılır.

Dagger 1-də modul nümunəsi:

// Dagger 1 Modul
@Module(injects = MyActivity.class)
public class MyModule {

    @Provides
    public MyDependency provideMyDependency() {
        return new MyDependency();
    }
}

Dagger 2-də modul nümunəsi:

// Dagger 2 Modul
@Module
public class MyModule {

    @Provides
    public MyDependency provideMyDependency() {
        return new MyDependency();
    }
}

Dagger 2-də komponent nümunəsi:

// Dagger 2 Komponent
@Component(modules = MyModule.class)
public interface MyComponent {

    void inject(MyActivity activity);
}

Dagger 2-nin əsas prinsipi: modullar və annotasiyalar vasitəsilə asılılıq qrafını təsvir edirsiniz və Dagger bu qrafı həyata keçirən sinfləri yaradır, bu da asılılıqların nümunələrini əldə etməyə imkan verir. Bu, əl ilə yazılmış fabriklərin avtomatik və səmərəli şəkildə həyata keçirilməsinə bənzəyir.