Estoy fusionando una rama CVS y uno de los cambios más grandes es el reemplazo, dondequiera que ocurra, de un patrón Singleton con clases abstractas que tienen un bloque de inicialización estático y todos los métodos estáticos.Java Singleton vs static: ¿hay un beneficio de rendimiento real?
¿Es esto algo que vale la pena mantener ya que requerirá unir muchos conflictos, qué tipo de situación estaría buscando para que esta refactorización valga la pena?
Estamos funcionando esta aplicación bajo Weblogic 8.1 (por lo JDK 1.4.2)
siento Thomas, quiero aclarar ..
la versión de la cabeza tiene el patrón Singleton tradicional (constructor privado, getInstance() etc)
la versión de la rama no tiene constructor, es una 'clase abstracta pública' y modificó todos los métodos del objeto para que sean 'estáticos'. El código que solía existir en el constructor privado se mueve a un bloque estático.
Luego se cambian todos los usos de la clase, lo que causa conflictos múltiples en la fusión.
En algunos casos se realizó este cambio.
Un singleton está vinculado al tiempo de vida de ClassLoader del cargador de clases que lo cargó, tanto como una estática. –
Y? Todo está vinculado a la vida útil de ClassLoader, pero al poner un singleton, obtienes una capa de ciclo de vida adicional, con más posibilidades (finalización) para manejar las cosas correctamente. –