usar patron ejercicios cuando conexion como java singleton

ejercicios - patron singleton java conexion



¿Cuál es el mejor enfoque para usar un Enum como singleton en Java? (4)

Basándose en lo que se ha escrito en la pregunta de SO Mejor Implementación de Singleton en Java , a saber, sobre el uso de una enumeración para crear un singleton, cuáles son las diferencias / pros / cons entre (constructor omitido)

public enum Elvis { INSTANCE; private int age; public int getAge() { return age; } }

y luego llamar a Elvis.INSTANCE.getAge()

y

public enum Elvis { INSTANCE; private int age; public static int getAge() { return INSTANCE.age; } }

y luego llamar a Elvis.getAge()


(Stateful) Los singletons generalmente se usan para pretender que no se usan variables estáticas. Si no usa realmente la variable estática pública, engañará a menos personas.


Escogería la opción que es la más simple y clara. Esto es un tanto subjetivo, pero si no sabes qué es lo más claro, solo escoge la opción más corta.


Supongamos que está vinculado a algo que utilizará las propiedades de cualquier objeto que le haya sido dado: puede pasar Elvis.INSTANCE muy fácilmente, pero no puede pasar Elvis.class y esperar que encuentre la propiedad (a menos que esté codificado deliberadamente para encontrarlo). propiedades estáticas de las clases).

Básicamente, solo usas el patrón singleton cuando quieres una instancia. Si los métodos estáticos funcionan bien para ti, simplemente utiliza esos y no te molestes con la enumeración.


Una gran ventaja es cuando su singleton debe implementar una interfaz. Siguiendo tu ejemplo:

public enum Elvis implements HasAge { INSTANCE; private int age; @Override public int getAge() { return age; } }

Con:

public interface HasAge { public int getAge(); }

No se puede hacer con estática ...