Java Language Implementa il pattern Singleton con un enum a elemento singolo

Esempio

Le costanti Enum vengono istanziate quando un enum viene referenziato per la prima volta. Pertanto, ciò consente di implementare il modello di progettazione software Singleton con un enum a elemento singolo.

public enum Attendant {

    INSTANCE;

    private Attendant() {
        // perform some initialization routine
    }

    public void sayHello() {
        System.out.println("Hello!");
    }
}


public class Main {

    public static void main(String... args) {
        Attendant.INSTANCE.sayHello();// instantiated at this point
    }
}

Secondo il libro "Effective Java" di Joshua Bloch, un enum a elemento singolo è il modo migliore per implementare un singleton. Questo approccio ha i seguenti vantaggi:

  • sicurezza del filo
  • garanzia di singola istanziazione
  • serializzazione pronta all'uso

E come mostrato nella sezione implements interface questo singleton potrebbe anche implementare una o più interfacce.