terminal

codeando_simple

terminal

menu

terminal

search_module

guest@codeandosimple: ~/system/search $ grep -r "" .

Press [ENTER] to execute search

Status

Engine: Ready

Database: Online

Index: V2.1.0_LATEST

bash — cat registry.md
guest@codeandosimple: ~/enterprise/patterns $ cat registry.md

Registry (Registro)_

// "El conocimiento es poder"

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.