Junior — Middle
Ինչպես է պահվում Hof կախվածությունը, նշված է Singleton նշանով, Dagger-ի կախվածությունների ներմուծման շրջանակում?
sobes.tech AI
Պատասխան AI-ից
Dagger-ում @Singleton նշանավորումը երաշխավորում է, որ օբյեկտը ստեղծվում է միայն մեկ անգամ կոմպոնենտի (Component) շրջանակներում և կրկնակի օգտագործվում է բոլոր հաջորդ կախվածության հարցում:
Ինչպես է դա աշխատում.
- Երբ ստեղծվում է Dagger կոմպոնենտը, այն պահպանում է սինգլտոն օրինակները իր ներքին կեշում:
- Առաջին անգամ @Singleton նշանով կախվածության հարցում, Dagger-ը ստեղծում է օբյեկտը և պահպանում:
- Հաջորդ հարցումներում նույն տիպի համար, Dagger-ը վերադարձնում է պահպանումը, այլ ոչ թե նոր ստեղծում:
Կարևոր է, որ սինգլտոնի շրջանակը սահմանափակված լինի կոմպոնենտով։ Եթե կա մի քանի կոմպոնենտ, յուրաքանչյուրն իր սինգլտոն օրինակով կարող է ունենալ:
Օրինակ՝
@Singleton
@Component
interface AppComponent {
MyService getMyService();
}
@Singleton
class MyService {
@Inject
MyService() {}
}
Այստեղ MyService-ը ստեղծվում է միայն մեկ անգամ AppComponent-ի մակարդակով և կրկնակի օգտագործվում: