Java Language Enum Singleton


Esempio

Java SE 5
public enum Singleton {
    INSTANCE;

    public void execute (String arg) {
        // Perform operation here 
    }
}

Le enumerazioni hanno costruttori privati, sono definitive e forniscono un adeguato meccanismo di serializzazione. Sono anche molto concisi e pigramente inizializzati in modo sicuro.

La JVM garantisce che i valori di enum non verranno istanziati più di una volta ciascuno, il che conferisce al modello singolare enum una difesa molto forte contro gli attacchi di riflessione.

Ciò di cui il modello enumerabile non protegge è rappresentato dagli altri sviluppatori che aggiungono fisicamente più elementi al codice sorgente. Di conseguenza, se scegli questo stile di implementazione per i tuoi singleton, è imperativo che tu dichiari chiaramente che non dovrebbero essere aggiunti nuovi valori a tali enumerazioni.

Questo è il modo consigliato di implementare il modello singleton, come spiegato da Joshua Bloch in Effective Java.