Junior — Middle
Ποιος είναι ο σκοπός του μοτίβου Lazy Singleton και πώς υλοποιείται;
sobes.tech AI
Απάντηση από AI
Το μοτίβο Lazy Singleton προορίζεται για τη δημιουργία μιας μοναδικής στιγμιότυπου μιας κλάσης, και αυτό το στιγμιότυπο αρχικοποιείται μόνο κατά την πρώτη πρόσβαση σε αυτό, και όχι κατά τη φόρτωση της κλάσης. Αυτό βοηθά στην εξοικονόμηση πόρων αν το αντικείμενο μπορεί να μην χρειαστεί.
Παράδειγμα υλοποίησης Lazy Singleton σε Java με καθυστερημένη αρχικοποίηση και συγχρονισμό:
public class LazySingleton {
private static LazySingleton instance;
private LazySingleton() {
// ιδιωτικός κατασκευαστής
}
public static synchronized LazySingleton getInstance() {
if (instance == null) {
instance = new LazySingleton();
}
return instance;
}
}
Εδώ, το αντικείμενο δημιουργείται μόνο κατά την πρώτη κλήση της getInstance(). Ο συγχρονισμός διασφαλίζει την ασφάλεια σε περιβάλλοντα πολλαπλών νημάτων, αλλά μπορεί να επηρεάσει την απόδοση. Για βελτίωση, μπορεί να χρησιμοποιηθεί διπλός έλεγχος κλειδώματος (double-checked locking) ή μια εσωτερική στατική κλάση.