Sobes.tech
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 και θα επαναχρησιμοποιηθεί.