Este repositorio contiene las soluciones a la serie de ejercicios propuestos para la prueba técnica de desarrollo de software.
El enfoque principal de estas soluciones ha sido garantizar un código limpio, mantenible y escalable, aplicando rigurosamente Principios SOLID (especialmente Open/Closed y Single Responsibility) y Patrones de Diseño orientados a objetos.
Para facilitar la revisión y mantener el código desacoplado, cada ejercicio ha sido desarrollado como un proyecto independiente dentro de su propia carpeta.
README.md detallado para cada ejercicio, donde explico la arquitectura propuesta y las decisiones de diseño adoptadas.
- 📁 Ejercicio 1: Plataforma de descuentos y promociones
- Objetivo: Motor de cálculo de precios extensible sin modificar código existente.
- Patrones clave: Strategy, separación de responsabilidades (Reglas vs. Estado).
- 📁 Ejercicio 2: Sistema de reservas concurrente
- Objetivo: Gestión segura de recursos compartidos en entornos multihilo y notificaciones extensibles.
- Enfoque clave: Control de concurrencia y patrón Factory/Strategy para canales de comunicación.
- 📁 Ejercicio 3: Paneles de monitorización
- Objetivo: Renderizado jerárquico y reactividad frente a eventos.
- Patrones clave: Composite y Observer.
- 📁 Ejercicio 4: Refactorización - Gestor de préstamos
- Objetivo: Realizar una propuesta de refactorización orientada a objetos para eliminar Code Smells.
- Enfoque clave: Encapsulamiento, Inversión de Dependencias (DI) y Manejo de Errores.
- Lenguaje: Java (SDK 11 o superior)