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.
Observer
Section titled “Observer”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.
Adapter
Section titled “Adapter”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.
Strategy
Section titled “Strategy”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.
Decorator
Section titled “Decorator”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.
Singleton
Section titled “Singleton”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.
Template Method
Section titled “Template Method”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.
Builder
Section titled “Builder”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.
Repository
Section titled “Repository”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.
Prototype
Section titled “Prototype”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.