Codigo limpio y refactorización
El Singleton Abusivo es un antipatrón relacionado con el uso excesivo o incorrecto del patrón de diseño Singleton. Aunque el patrón Singleton tiene su utilidad (por ejemplo, garantizar una única instancia global de una clase en toda la aplicación), su abuso puede generar problemas de diseño y mantenimiento en el código.
Ejemplo Mal
1public class Logger { 2 private static Logger instance; 3 4 private Logger() {} 5 6 public static Logger getInstance() { 7 if (instance == null) { 8 instance = new Logger(); 9 } 10 return instance; 11 } 12 13 public void log(String message) { 14 System.out.println("LOG: " + message); 15 } 16} 17 18public class UserService { 19 public void createUser(String name) { 20 Logger logger = Logger.getInstance(); 21 logger.log("Creating user: " + name); 22 } 23}
Problema: Los singletons abusivos dificultan las pruebas y reducen la flexibilidad.
Solución: Usa singletons solo si son absolutamente necesarios y limítalos correctamente.
Ejemplo Corregido
1public class Logger { 2 public void log(String message) { 3 System.out.println("LOG: " + message); 4 } 5} 6 7public class UserService { 8 private final Logger logger; 9 10 public UserService(Logger logger) { 11 this.logger = logger; 12 } 13 14 public void createUser(String name) { 15 logger.log("Creating user: " + name); 16 } 17} 18 19// Uso 20Logger logger = new Logger(); 21UserService userService = new UserService(logger); 22userService.createUser("John Doe");