Junior — Middle
Πώς διατηρείται η εξάρτηση Hof, που σημειώνεται με την επισήμανση Singleton, στο πλαίσιο της εξάρτησης Dagger;
sobes.tech AI
Απάντηση από AI
Στο Dagger, η σημείωση @Singleton εγγυάται ότι το αντικείμενο θα δημιουργηθεί μόνο μία φορά στο πλαίσιο του συστατικού (Component) και θα επαναχρησιμοποιηθεί σε όλες τις επόμενες αιτήσεις εξαρτήσεων.
Πώς λειτουργεί:
- Όταν δημιουργείται το συστατικό Dagger, αποθηκεύει singleton στιγμιότυπα στην εσωτερική προσωρινή μνήμη του.
- Στην πρώτη αίτηση εξάρτησης με τη σημείωση @Singleton, το Dagger δημιουργεί το αντικείμενο και το αποθηκεύει.
- Στις επόμενες αιτήσεις του ίδιου τύπου, το Dagger επιστρέφει το αποθηκευμένο στιγμιότυπο αντί να δημιουργήσει ένα νέο.
Είναι σημαντικό η εμβέλεια του singleton να περιορίζεται στο συστατικό. Αν υπάρχουν πολλά συστατικά, κάθε ένα μπορεί να έχει το δικό του singleton.
Παράδειγμα:
@Singleton
@Component
interface AppComponent {
MyService getMyService();
}
@Singleton
class MyService {
@Inject
MyService() {}
}
Εδώ, το MyService θα δημιουργηθεί μία φορά σε επίπεδο του AppComponent και θα επαναχρησιμοποιηθεί.