Junior — Middle
Mis vahe on mehhanismide Binds ja Provides vahel sõltuvuste süstimise või moodulite süsteemide kontekstis?
sobes.tech AI
Vastus AI-lt
Kontekstis sõltuvuste süstimise (näiteks Android Daggeriga) annotatsioonid @Provides ja @Binds teenivad erinevaid eesmärke, kuigi mõlemad kasutatakse sõltuvuste pakkumiseks.
-
@Provideskasutatakse meetodite jaoks, mis loovad ja tagastavad konkreetse objekti näidise. Tavaliselt on see meetod kehas, kuhu saab kirjutada objekti loomise loogika. -
@Bindsrakendub liidese sidumiseks selle rakendusega ilma uue näidise loomata. Meetod@Binds-iga peab olema abstraktne ja lihtsalt tagastama liidese rakenduse, mis antakse parameetrina.
Näide:
@Module
abstract class NetworkModule {
@Binds
abstract fun bindApiService(impl: ApiServiceImpl): ApiService
}
@Module
class DatabaseModule {
@Provides
fun provideDatabase(): Database {
return DatabaseImpl()
}
}
Seega on @Binds tõhusam ja lihtsam, kui soovite lihtsalt näidata, et liides on rakendatud konkreetse klassiga, samas kui @Provides on kasulik, kui vaja on objekti loomise loogikat.