Middle+
Дар бораи нишонаҳои Dagger @Provides ва @Binds гап зан
sobes.tech AI
Ҷавоб аз AI
Annotations @Provides дархост барои муайян кардани методҳо дар модулҳо истифода мешавад, ки намунаҳои вобастагиро месозанд. Ин методҳо бо @Provides ишора шудаанд ва намудҳои вобастагиро, ки онҳо таъмин мекунанд, бармегардонанд. Дар бадани метод логикаи сохтани намуна ҷойгир аст.
@Module
class AppModule {
@Provides
fun provideDatabase(context: Context): AppDatabase {
// Логикаи сохтани базаи додаҳо
return Room.databaseBuilder(context, AppDatabase::class.java, "app-database").build()
}
}
Аннотацияи @Binds дар модулҳо барои нишон додани он ки як интерфейс бо иҷрои муайян пайваст аст, истифода мешавад. Он ба методҳои абстрактӣ татбиқ мешавад, ки параметри иҷроишро мегиранд ва интерфейсро бармегардонанд. Dagger кодро барои @Binds нисбат ба @Provides самараноктар месозад, зеро барои сохтани намуна занг задан лозим нест.
@Module
interface AppBindsModule {
@Binds
fun bindRepository(impl: DefaultRepository): Repository
}
interface Repository { /* ... */ }
class DefaultRepository @Inject constructor(): Repository { /* ... */ }
Тафовутҳои асосӣ:
@Providesбарои сохтани намунаҳои объектҳо истифода мешавад, ки одатан бо логикаи мураккаб ё вобастагиҳо талаб мекунанд.@Bindsбарои пайваст кардани намудҳои абстрактӣ (интерфейсҳо) бо иҷрои онҳо истифода мешавад, ки дар он ҷо логикаи мураккаб нест, ва самараноктар аст.