Sobes.tech
Junior — Middle

Bog'lanishlarni injektsiya qilish uchun Dagger kutubxonasining ishlash prinsipi va tuzilishini tushuntiring

sobes.tech AI

AIdan javob

Dagger — bu Android va Java ilovalarida bog‘liq bo‘lishlarni (Dependency Injection, DI) uchun kutubxona. U kerakli obyektlarni (bog‘liqliklarni) avtomatik ravishda sinflarga taqdim etadi, bu esa bog‘liqlikni kamaytiradi va test qilishni soddalashtiradi.

Ishlash prinsipi:

  • Dagger bog‘liqliklarni tasvirlash uchun anotatsiyalarni ishlatadi.
  • Kompilyatsiya jarayonida, obyektlarni yaratadigan va ulashadigan kodlar ishlab chiqiladi.
  • Bu yuqori samaradorlikni ta'minlaydi va ish vaqtida refleksiya (reflection)dan foydalanishni oldini oladi.

Asosiy komponentlar:

  • @Module@Provides anotatsiyasi bilan belgilangan metodlar orqali bog‘liqliklarni ta'minlaydigan sinf.
  • @Component — modullar va injeksiya nuqtalarini bog‘laydigan, bog‘liqliklar grafigini yaratadigan interfeys.
  • @Inject — bog‘liqlikni qayerga injektsiya qilishni ko‘rsatadigan anotatsiya.

Misol:

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

public class MainActivity extends AppCompatActivity {
    @Inject
    Retrofit retrofit;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        DaggerAppComponent.create().inject(this);
        // Endi retrofit foydalanishga tayyor
    }
}

Shu tarzda, Dagger bog‘liqliklarni markazlashtirilgan va samarali boshqarishga yordam beradi, ilova arxitekturasini yaxshilaydi.