Consideraciones sobre Singleton al utilizar el patrón monomórfico
A veces, en algunos casos, el uso de Singleton no puede lograr el propósito de Singleton. Por ejemplo, diferentes cargadores de clases cargan varios objetos Singleton al mismo tiempo. También debe prestar atención a esto cuando utilice sistemas distribuidos. como situación de EJB, porque EJB es entre servidores y entre JVM.
Tomamos el código fuente de SUN's Pet Store (Pet Store 1.3.1) como ejemplo para analizar brevemente el ServiceLocator:
Hay dos tipos de ServiceLocators en Pet Store, uno en En el directorio EJB; uno en el directorio WEB, verificamos el contenido de estos dos directorios. Encontrará que el contenido de ServiceLocator es más o menos el mismo y ambos proporcionan servicios de ubicación de consultas EJB, pero ¿por qué deberían separarse? Si estudia detenidamente estos dos ServiceLocators, encontrará la diferencia: ServiceLocator adopta el modo Singleton en WEB, ServiceLocator pertenece al posicionamiento de recursos y es lógico utilizar el modo Singleton. Pero en EJB, el modo Singleton ha perdido su función, por lo que ServiceLocator se divide en dos tipos, uno para servicios WEB y otro para servicios EJB.
El modo Singleton parece simple y conveniente de usar, pero no es fácil usarlo correctamente. Requiere una comprensión considerable de conceptos de Java como clases, subprocesos y memoria.
En resumen: si su aplicación está basada en contenedores, entonces el patrón Singleton se puede utilizar con poco o ningún uso y puede utilizar tecnologías alternativas relevantes.