Design Patterns
Este documento detalla los patrones de diseño utilizados en el microservicio de forklift, explicando cómo y dónde se aplican, así como los beneficios que aportan.
Patrón Either (Either)
Section titled “Patrón Either (Either)”Implementación
Section titled “Implementación”El patrón Either es ampliamente utilizado en el microservicio para el manejo de errores y resultados. Se implementa a través de la biblioteca @justomx/either, que proporciona una estructura de datos que puede contener un valor de éxito (Right) o un valor de error (Left).
Beneficios
Section titled “Beneficios”- Manejo explícito de errores sin necesidad de excepciones
- Código más predecible y fácil de seguir
- Fuerza al desarrollador a considerar tanto el caso de éxito como el de error
Patrón Adaptador (Adapter)
Section titled “Patrón Adaptador (Adapter)”Implementación
Section titled “Implementación”El patrón Adaptador se utiliza en la capa de infraestructura para adaptar servicios externos a las interfaces definidas en el dominio. Esto permite que la lógica de negocio sea independiente de las implementaciones concretas.
Beneficios
Section titled “Beneficios”- Desacoplamiento entre la lógica de negocio y los detalles de implementación
- Facilita el cambio de implementaciones sin afectar al dominio
- Mejora la testeabilidad al permitir mockear las implementaciones
Patrón Repositorio (Repository)
Section titled “Patrón Repositorio (Repository)”Implementación
Section titled “Implementación”El patrón Repositorio se utiliza para abstraer el acceso a datos, proporcionando una interfaz que simula una colección de objetos en memoria.
Beneficios
Section titled “Beneficios”- Abstracción del mecanismo de persistencia
- Facilita el cambio de tecnología de base de datos
- Mejora la testeabilidad al permitir mockear los repositorios
Patrón Fábrica (Factory)
Section titled “Patrón Fábrica (Factory)”Implementación
Section titled “Implementación”El patrón Fábrica se utiliza para crear objetos complejos, ocultando los detalles de su construcción.
Beneficios
Section titled “Beneficios”- Encapsula la lógica de creación de objetos complejos
- Facilita la configuración centralizada
- Mejora la legibilidad del código
Patrón Observador (Observer)
Section titled “Patrón Observador (Observer)”Implementación
Section titled “Implementación”Aunque no se encuentra una implementación explícita del patrón Observador en el código fuente, el sistema utiliza mecanismos de logging y métricas que siguen principios similares, donde ciertos eventos del sistema son registrados o medidos.
Beneficios
Section titled “Beneficios”- Desacoplamiento entre los componentes que generan eventos y los que los procesan
- Facilita la adición de nuevos observadores sin modificar el código existente
- Mejora la observabilidad del sistema
Patrón Objeto de Valor (Value Object)
Section titled “Patrón Objeto de Valor (Value Object)”Implementación
Section titled “Implementación”El patrón Objeto de Valor se utiliza para representar conceptos del dominio que se identifican por su valor y no por su identidad.
Beneficios
Section titled “Beneficios”- Encapsula reglas de validación y comportamiento
- Mejora la expresividad del código
- Previene estados inválidos