English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
El patrón Singleton limita la instanciación de la clase a un solo objeto. INSTANCE es el campo público estático final que representa la instancia del enumerado. Podemos obtener la instancia de la clase usando EnumSingleton.INSTANCE, pero si queremos cambiar la implementación, es mejor encapsularla en el getter.
Hay varias razones por las que podemos usar enumeraciones como singleton en Java
Garantiza una instancia (incluso si se intenta instanciar múltiples instancias a través de reflexión).
Seguro de hilos.
Serialización.
public enum Singleton { INSTANCE; private singleton() { } }
public enum EnumSingleton { INSTANCE; private String name; private int age; private void build(SingletonBuilder builder) { this.name = builder.name; this.age = builder.age; } public static EnumSingleton getSingleton() { // static getter return INSTANCE; } public void print() { System.out.println("Name: "+name + ", age: "+age); } public static class SingletonBuilder { private final String name; private int age; private SingletonBuilder() { name = null; } public SingletonBuilder(String name) { this.name = name; } public SingletonBuilder age(int age) { this.age = age; return this; } public void build() { EnumSingleton.INSTANCE.build(this); } } public static void main(String[] args) { new SingletonBuilder("Adithya").age(25).build(); EnumSingleton.getSingleton().print(); } }
Resultado de salida
Nombre: Adithya, edad: 25