Sobes.tech
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-ի մակարդակով և կրկնակի օգտագործվում: