Sobes.tech
Junior — Middle

Πότε συμβαίνει η δημιουργία του Singleton;

sobes.tech AI

Απάντηση από AI

Η δημιουργία ενός αντικειμένου του μοτίβου Singleton συμβαίνει τη στιγμή της πρώτης πρόσβασης σε αυτό, εάν χρησιμοποιείται η αργή (lazy) μέθοδος αρχικοποίησης.

Δηλαδή, το αντικείμενο δημιουργείται κατά την πρώτη κλήση της μεθόδου που επιστρέφει το Singleton, π.χ., getInstance(). Αυτό επιτρέπει να καθυστερήσει η δημιουργία του αντικειμένου μέχρι να χρειαστεί, εξοικονομώντας πόρους.

Παράδειγμα αργής αρχικοποίησης Singleton σε Android/Java:

public class Singleton {
    private static Singleton instance;

    private Singleton() {
        // ιδιωτικός κατασκευαστής
    }

    public static synchronized Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}

Αντίθετα, αν χρησιμοποιείται η αρχικοποίηση κατά τη φόρτωση της κλάσης (eager initialization), τότε το αντικείμενο δημιουργείται αμέσως κατά τη φόρτωση της κλάσης, πριν από την πρώτη πρόσβαση.