Middle
Dagger nədir və Android inkişafında nə üçün istifadə olunur?
sobes.tech Süni İntellekt
AI-dan cavab
Dagger, Java və Kotlin-də asılılıq inyeksiyası (Dependency Injection - DI) üçün çərçivədir.
Android inkişafında istifadə olunur:
- Testlərin sadələşdirilməsi: Testlər zamanı real asılılıqları asanlıqla mock və ya stub ilə əvəz etməyə imkan verir.
- Bağlılığın azaldılması: Tətbiq komponentləri bir-birindən daha az asılı olur, bu da kodun dəyişdirilməsi və dəstəklənməsini asanlaşdırır.
- Kodun təkrar istifadəsi: Ümumi asılılıqlar tətbiqin müxtəlif hissələrinə asanlıqla təmin edilə bilər.
- Obyektlərin həyat dövrünün idarə olunması: Dagger obyektlərin yaradılmasını və həyat dövrünü idarə edə bilər, məsələn, scope-lar istifadə etməklə.
- Memarlıq təkmilləşdirmələri: Modulyar və miqyaslana bilən tətbiqlərin qurulmasını təşviq edir.
Dagger tərtib zamanı işləyir, asılılıq inyeksiyasını həyata keçirən kodu yaradır. Bu, refleksiv DI çərçivələrinə nisbətən daha yüksək performansa səbəb olur.
Dagger-ın əsas anlayışları:
@Module: Asılılıqları təmin edən sinflər.@Providesilə işarələnmiş metodlar asılılıq nümunələrini qaytarır.
// Modul nümunəsi
@Module
class AppModule {
@Provides
fun provideApiService(): ApiService {
return ApiService() // ApiService asılılıqdır
}
}
@Component: Asılılıq qrafını təyin edən və inyeksiyaya giriş nöqtələri təmin edən interfeyslər.
// Komponent nümunəsi
@Component(modules = [AppModule::class])
interface AppComponent {
fun inject(activity: MainActivity) // MainActivity-ə asılılıqları inyeksiya etmək üçün metod
}
@Inject: Asılılıqları tələb etmək üçün istifadə olunan annotasiya. Konstruktor, sahə və ya metod üzərində tətbiq oluna bilər.
// @Inject istifadə nümunəsi
class MainActivity : AppCompatActivity() {
@Inject
lateinit var apiService: ApiService // ApiService asılılığını tələb edirik
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// Asılılıqları in'ektsiya etmək üçün komponent vasitəsilə
(application as App).appComponent.inject(this)
// İndi apiService initialized
apiService.callApi()
}
}
@Scope: Komponent daxilində təmin olunan obyektlərin həyat dövrünü müəyyən edən annotasiyalar, məsələn,@Singleton.
Dagger başlanğıc konfiqurasiya və öyrənmə tələb edir, lakin onun üstünlükləri orta və böyük Android tətbiqlərində öz dəyərini göstərir.