Design Patterns
Este documento detalla los patrones de diseño utilizados en el microservicio op-inventory-gateway.
Patrón Adapter
Section titled “Patrón Adapter”El patrón Adapter convierte la interfaz de una clase en otra interfaz que los clientes esperan. Permite que las clases trabajen juntas cuando de otra manera no podrían debido a interfaces incompatibles.
Implementación
Section titled “Implementación”En op-inventory-gateway, el patrón Adapter se utiliza para proporcionar una interfaz unificada a diferentes sistemas de gestión de inventario.
Componentes clave:
-
Interfaces de servicio en la capa de dominio:
InventoryService(src/domain/inventory/service.ts): Define una interfaz común para operaciones de inventarioInventoryItemService(src/domain/inventory-item/service.ts): Define una interfaz común para operaciones de elementos de inventario
-
Implementaciones concretas en la capa de infraestructura:
HttpInventoryManagerService(src/infrastructure/service/inventory/index.ts): Adapta el microservicio Inventory Manager a la interfazInventoryServiceHttpBodegaoInventoryItemService(src/infrastructure/service/inventory-item/index.ts): Adapta el servicio Bodegao Inventory Item a la interfazInventoryItemService
-
Casos de uso:
- El
processTransactionMiddlewareutiliza estos adaptadores para enrutar peticiones al sistema backend apropiado
- El
Beneficios
Section titled “Beneficios”- Permite al microservicio interactuar con diferentes sistemas backend a través de una interfaz unificada
- Facilita la migración gradual de sistemas legacy a microservicios
- Aísla el código cliente de los detalles de implementación de los sistemas backend
Patrón Facade
Section titled “Patrón Facade”El patrón Facade proporciona una interfaz simplificada a un subsistema complejo. No encapsula el subsistema, sino que proporciona una interfaz simplificada para él.
Implementación
Section titled “Implementación”El op-inventory-gateway actúa como una fachada para los sistemas de gestión de inventario, proporcionando una API unificada para los clientes.
Componentes clave:
-
Servidor Express y middleware:
server.ts(src/infrastructure/http/server.ts): Configura el servidor Express y los middlewareprocessTransactionMiddleware(src/infrastructure/http/middlewares/proccess-transaction.ts): Enruta peticiones al servicio apropiado
-
Wrapper de servicio:
WrapperInventoryItemService(src/infrastructure/service/inventory-item/wrapper.ts): Proporciona una interfaz unificada a servicios de elementos de inventario específicos por país
-
Casos de uso:
- Todas las peticiones HTTP son manejadas por la fachada, que las enruta al sistema backend apropiado
Beneficios
Section titled “Beneficios”- Simplifica la interfaz del cliente a los complejos sistemas de gestión de inventario
- Centraliza la lógica de enrutamiento en un solo lugar
- Proporciona un único punto de entrada para todas las operaciones de inventario
- Permite cambiar transparentemente entre sistemas backend basados en la configuración
Patrón Factory Method
Section titled “Patrón Factory Method”El patrón Factory Method define una interfaz para crear un objeto, pero deja que las subclases decidan qué clase instanciar. Permite que una clase difiera la instanciación a las subclases.
Implementación
Section titled “Implementación”En op-inventory-gateway, los métodos factory se utilizan para crear instancias de servicios.
Componentes clave:
-
Métodos factory:
getInventoryServiceygetInventoryItemService(src/infrastructure/providers/services.ts): Métodos factory para crear instancias de serviciosWrapperInventoryItemService.build()(src/infrastructure/service/inventory-item/wrapper.ts): Método factory estático para crear un servicio wrapper
-
Casos de uso:
- El
processTransactionMiddlewareutiliza estos métodos factory para obtener instancias de servicios
- El
Beneficios
Section titled “Beneficios”- Centraliza la lógica de creación de servicios
- Permite una fácil configuración e inyección de dependencias
- Simplifica las pruebas al permitir la inyección de servicios mock