Design Patterns
Este documento detalla los patrones de diseño utilizados en el worker op-restocking-evaluator.
Arquitectura Hexagonal (Puertos y Adaptadores)
Section titled “Arquitectura Hexagonal (Puertos y Adaptadores)”- Descripción: Un patrón que permite que una aplicación sea igualmente dirigida por usuarios, programas, pruebas automatizadas o scripts por lotes, y que se desarrolle y pruebe de forma aislada de sus eventuales dispositivos y bases de datos en tiempo de ejecución.
- Componentes clave:
- Capa de dominio:
- Archivos
service.ts: Definen interfaces (puertos) para servicios externos - Archivos
errors.ts: Definen errores específicos del dominio
- Archivos
- Implementación en la capa de infraestructura:
- Directorio
services/: Contiene implementaciones de adaptadores para servicios externos - Cada servicio implementa una interfaz de dominio, p.ej.,
HttpRestockingService implements RestockingService
- Directorio
- Casos de uso:
processor.ts: Utiliza interfaces de dominio sin conocer detalles de implementación
- Capa de dominio:
Inyección de Dependencias
Section titled “Inyección de Dependencias”- Descripción: Una técnica mediante la cual un objeto suministra las dependencias de otro objeto.
- Componentes clave:
- Interfaces de servicio:
- La capa de dominio define interfaces de servicio
- Implementación:
infrastructure/providers/services.ts: Crea y proporciona instancias de servicios- Inyección por constructor en
RestockingEvaluatorProcessoryRestockingEvaluatorWorker
- Casos de uso:
- Permite un acoplamiento flexible entre componentes
- Facilita las pruebas al permitir implementaciones simuladas
- Interfaces de servicio:
Manejo Funcional de Errores (Mónada Either)
Section titled “Manejo Funcional de Errores (Mónada Either)”- Descripción: Un patrón para manejar errores de manera funcional, evitando excepciones y proporcionando seguridad de tipos.
- Componentes clave:
- Tipo Either:
- El paquete
@justomx/eitherproporciona los tiposEitheryEitherAsync - Representa un valor de uno de dos tipos posibles (una unión disjunta)
- El paquete
- Implementación:
- Los métodos de servicio devuelven
Either<BusinessError, T>para representar éxito o fracaso EitherAsyncpara operaciones asíncronas con manejo de errores
- Los métodos de servicio devuelven
- Casos de uso:
processor.ts: UtilizaflatMappara encadenar operaciones que podrían fallarworker.ts: Utilizafoldpara manejar casos de éxito y fracaso
- Tipo Either:
Patrón Adaptador
Section titled “Patrón Adaptador”- Descripción: Permite que objetos con interfaces incompatibles colaboren.
- Componentes clave:
- Interfaces de dominio:
RestockingService,InventoryService, etc.
- Implementación:
HttpRestockingService,HttpInventoryService, etc.- Adapta llamadas a API HTTP a interfaces de dominio
- Casos de uso:
- Permite que la capa de dominio defina sus propias interfaces
- Facilita el reemplazo de implementaciones de servicios externos
- Interfaces de dominio: