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-ის დონეზე და კვლავ გამოიყენება.