El patrón Registry (Registro) es un objeto bien conocido por todos los demás objetos de una aplicación, que se utiliza para encontrar otros objetos y servicios comunes.
Actúa como una libreta de direcciones centralizada o un directorio donde se registran y se recuperan referencias a objetos globales, como conexiones de base de datos, configuraciones de usuario o servicios de mensajería.
# ¿Cuándo usarlo?
Este patrón es ideal cuando múltiples partes de una aplicación necesitan acceder a un mismo conjunto de objetos o servicios globales, y se desea evitar el paso excesivo de referencias a través de parámetros.
Es útil para centralizar la gestión de objetos compartidos y simplificar la forma en que los diferentes componentes de la aplicación interactúan con ellos.
# Ventajas
-
verified
Centralización
Proporciona un punto único para encontrar objetos comunes.
-
verified
Reducción de parámetros
Evita tener que pasar referencias de objetos globales a través de múltiples niveles de métodos.
-
verified
Facilidad de acceso
Simplifica la forma en que los objetos acceden a servicios compartidos.
# Desventajas
-
warning
Estado global oculto
Puede ocultar dependencias, dificultando la comprensión del flujo de datos.
-
warning
Dificultad en pruebas
Probar clases que dependen de un Registry global puede ser más complejo.
-
warning
Posible abuso
Puede usarse en exceso para esconder malas prácticas de diseño.
# Ejemplo Detallado en Java
Supongamos un Registro que almacena la conexión a la base de datos y un servicio de configuración:
Registro.java
public class Registro {
private static Registro instancia;
private Connection dbConnection;
private ConfigService configService;
private Registro() {}
public static Registro getInstance() {
if (instancia == null) {
instancia = new Registro();
}
return instancia;
}
public Connection getDbConnection() {
return dbConnection;
}
public void setDbConnection(Connection dbConnection) {
this.dbConnection = dbConnection;
}
public ConfigService getConfigService() {
return configService;
}
public void setConfigService(ConfigService configService) {
this.configService = configService;
}
}
# Conclusiones
El patrón Registry facilita el acceso a objetos y servicios globales, promoviendo una organización centralizada y simplificando la interacción entre componentes. Es fundamental usarlo con moderación y ser consciente de las dependencias globales que introduce.