Sobes.tech
Junior — Middle

როგორ ინარჩუნება Hof-ის დამოკიდებულება, რომელიც აღნიშნულია Singleton ანოტაციით, Dagger-ის დამოკიდებულების ინექციის ფარგლებში?

sobes.tech AI

პასუხი AI-სგან

Dagger-ში, @Singleton ნიშანი გარანტიას აძლევს, რომ ობიექტი მხოლოდ ერთხელ შეიქმნება კომპონენტის (Component) ფარგლებში და ყველა შემდგომ დამოკიდებულების მოთხოვნაზე ხელახლა გამოიყენება.

როგორ მუშაობს:

  • როდესაც დაგგერის კომპონენტი შეიქმნება, ის ინახავს სინგლტონ მაგალითებს თავის შიდა ქეშში.
  • პირველი მოთხოვნის დროს, სადაც გამოიყენება @Singleton ნიშანი, დაგგერი ქმნის ობიექტს და ინახავს.
  • შემდგომ მოთხოვნებზე იგივე ტიპის, დაგგერი აბრუნებს შენახულ მაგალითს, ახალი შექმნის ნაცვლად.

მნიშვნელოვანია, რომ სინგლტონის ზონა შეზღუდული იყოს კომპონენტის ფარგლებში. თუ არსებობს რამდენიმე კომპონენტი, თითოეულს შეუძლია თავისი სინგლტონი ჰქონდეს.

მაგალითი:

@Singleton
@Component
interface AppComponent {
    MyService getMyService();
}

@Singleton
class MyService {
    @Inject
    MyService() {}
}

აქ, MyService ერთხელ შეიქმნება AppComponent-ის დონეზე და კვლავ გამოიყენება.