Ի՞նչ տարբերություն կա Binds և Provides մեխանիզմների միջև dependency injection կամ մոդուլային համակարգերի համատեքստում։
sobes.tech AI
Պատասխան AI-ից
Ավելի կոնտեքստում (օրինակ՝ Android-ում Dagger-ով) @Provides և @Binds նշումները ծառայում են տարբեր նպատակների համար, թեև երկուսն էլ օգտագործվում են կախվածությունների տրամադրման համար:
-
@Providesօգտագործվում է այն մեթոդների համար, որոնք ստեղծում և վերադարձնում են կոնկրետ օբյեկտի օրինակ։ սովորաբար, դա մեթոդ է մարմնով, որտեղ կարող եք գրել օբյեկտի ստեղծման տրամաբանությունը։ -
@Bindsկիրառվում է ինտերֆեյսի կապակցման համար նրա իրագործման հետ՝ առանց նոր օրինակ ստեղծելու։@Binds-ով նշված մեթոդը պետք է լինի աբստրակտ և պարզապես վերադարձնի ինտերֆեյսի իրացումը, որը փոխանցվում է որպես պարամետր։
Օրինակ՝
@Module
abstract class NetworkModule {
@Binds
abstract fun bindApiService(impl: ApiServiceImpl): ApiService
}
@Module
class DatabaseModule {
@Provides
fun provideDatabase(): Database {
return DatabaseImpl()
}
}
Այսպիսով, @Binds ավելի արդյունավետ և պարզ է, երբ պարզապես անհրաժեշտ է նշել, որ ինտերֆեյսը իրականացվում է կոնկրետ դասով, իսկ @Provides օգտագործվում է, երբ անհրաժեշտ է տրամաբանություն օբյեկտի ստեղծման համար։