A04 — Decorator Domain
Compón comportamientos dinámicamente a través de decorators sin modificación
Patrón: Builder + Decorator Pattern
Filosofía: Principio Abierto/Cerrado. Añade comportamiento a través de composición, nunca modificación.
Descripción
A04 aplica el patrón Decorator con un Builder para componer reglas de precio dinámicamente. Cada regla de precio (descuento, impuesto, recargo) es un decorator separado que envuelve al anterior. Nuevas reglas requieren nuevos archivos decorator, no modificación de código existente.
Fortalezas:
- Principio Abierto/Cerrado: extiende a través de composición, no modificación
- Cada decorator es una responsabilidad única: aplica una regla
- Lógica de dominio pura, altamente testeable sin base de datos
- Escala horizontalmente: nuevas reglas = nuevos archivos, código existente intacto
- La Fase 05 apenas requeriría cambios al código existente
- Reglas encadenables permiten escenarios de precio complejos
Debilidades:
- Mayor coste inicial (22 archivos, 1139 líneas en Fase 04)
- Curva de aprendizaje pronunciada para el concepto de composición de decorators
- Debugging puede ser complejo: los decorators están envueltos unos dentro de otros
- La configuración del Builder debe ser precisa para obtener el orden correcto de reglas
- Over-engineering para dominios simples y estables
Evolución a través de Fases
| Fase | Archivos | Líneas de Código | Controlador (líneas) |
|---|---|---|---|
| Fase 01 | 13 | 423 | 32 |
| Fase 02 | 16 | 671 | 32 |
| Fase 03 | 19 | 878 | 32 |
| Fase 04 | 22 | 1139 | 32 |
Escalabilidad Horizontal: El controlador nunca cambia (32 líneas). Nuevos archivos añadidos (+9) pero código existente intacto. Cada decorator es una unidad enfocada y testeable. Mayor coste inicial paga dividendos a medida que el dominio evoluciona.
Métricas Clave
Total de Archivos (Fase 04)
22
+9 archivos, todos nuevos decorators
Total de Líneas de Código
1139
+169% crecimiento P01→P04
Tamaño del Controlador (Todas las Fases)
32 líneas
Cero crecimiento en todas las fases
Puntuación de Testeabilidad
Excelente
Dominio puro, no necesita BD
Conclusión
Escalabilidad horizontal a un coste.
A04 es el enfoque más sofisticado. Cumple la promesa del Principio Abierto/Cerrado: el sistema crece a través de nuevos archivos, no modificaciones. Cada decorator es enfocado, testeable e independiente. La Fase 05 añadiría unos pocos nuevos decorators sin tocar código existente.
El compromiso es una complejidad inicial significativa: 22 archivos y 1139 líneas para la Fase 04. Esta inversión se justifica cuando las reglas cambian frecuentemente, pero es excesivo para dominios estables. Este es el patrón al que recurrir cuando sabes que tu dominio evolucionará rápidamente y necesita protección contra fragilidad.
✓ Cuándo usar A04
- Las reglas de precio cambian frecuentemente e impredeciblemente
- El negocio espera mantenimiento y evolución a largo plazo
- El equipo tiene experiencia con patrones de diseño y composición
- Cada regla debe ser testeable y desplegable de forma independiente
- Necesitas extensibilidad sin modificación de código existente