Skip to content

Design Patterns

Utilizamos varios patrones de diseño en nuestros microservicios para resolver problemas comunes de manera elegante y mantenible. A continuación se presentan los patrones más utilizados en nuestra arquitectura.

El patrón Observer permite que un objeto (sujeto) mantenga una lista de sus dependientes (observadores) y les notifique automáticamente cuando cambia su estado.

Uso común: Implementación de sistemas de eventos, notificaciones en tiempo real, y propagación de cambios de estado.

El patrón Adapter permite que interfaces incompatibles trabajen juntas, convirtiendo la interfaz de una clase en otra que el cliente espera.

Uso común: Integración con APIs externas, compatibilidad con sistemas heredados, y adaptación de bibliotecas de terceros.

El patrón Strategy define una familia de algoritmos, encapsula cada uno, y los hace intercambiables. Permite que el algoritmo varíe independientemente de los clientes que lo utilizan.

Uso común: Implementación de diferentes estrategias de validación, algoritmos de precios, y métodos de autenticación.

El patrón Decorator permite añadir responsabilidades a objetos dinámicamente, proporcionando una alternativa flexible a la herencia para extender la funcionalidad.

Uso común: Añadir funcionalidades como logging, caching, o validación a componentes existentes sin modificar su código.

El patrón Singleton garantiza que una clase tenga solo una instancia y proporciona un punto de acceso global a ella.

Uso común: Gestión de conexiones a bases de datos, configuración de aplicaciones, y servicios compartidos.

El patrón Template Method define el esqueleto de un algoritmo en un método, delegando algunos pasos a las subclases. Permite que las subclases redefinan ciertos pasos sin cambiar la estructura del algoritmo.

Uso común: Procesamiento de datos en etapas, flujos de trabajo, y operaciones con pasos comunes pero implementaciones variables.

El patrón Builder separa la construcción de un objeto complejo de su representación, permitiendo que el mismo proceso de construcción cree diferentes representaciones.

Uso común: Creación de objetos complejos, configuración de objetos con muchos parámetros opcionales, y construcción paso a paso.

El patrón Repository media entre el dominio y las capas de mapeo de datos, actuando como una colección en memoria de objetos de dominio.

Uso común: Abstracción del acceso a datos, separación de la lógica de negocio de la persistencia, y facilitación de pruebas unitarias.

El patrón Prototype especifica los tipos de objetos a crear utilizando una instancia prototípica, y crea nuevos objetos copiando este prototipo.

Uso común: Creación de objetos basados en plantillas, clonación de objetos complejos, y minimización del costo de creación de objetos.