Java Language Enum Singleton


Ejemplo

Java SE 5
public enum Singleton {
    INSTANCE;

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

Las enumeraciones tienen constructores privados, son definitivas y proporcionan la maquinaria de serialización adecuada. También son muy concisos y están perezosamente iniciados de manera segura para los hilos.

La JVM ofrece una garantía de que los valores de enumeración no se instanciarán más de una vez, lo que otorga al patrón de enumeración de enumeración una defensa muy fuerte contra los ataques de reflexión.

Lo que no protege contra el patrón de enumeración es que otros desarrolladores agreguen físicamente más elementos al código fuente. Por consiguiente, si elige este estilo de implementación para sus singletons, es imperativo que documente claramente que no se deben agregar nuevos valores a esas enumeraciones.

Esta es la forma recomendada de implementar el patrón de singleton, como lo explica Joshua Bloch en Effective Java.