Skip to content

Conversation

Alaparamos
Copy link

Cambios Realizados

  1. Modelado de la Clase Alerta + Patrón Strategy
    En la versión original del ejercicio ClimaAlert no existía la clase Alerta en la capa de dominio, por lo que la lógica de “qué es una alerta” estaba incrustada en el service.
    Justificación:

    • Principio de Responsabilidad Única (SRP)
      • Alerta concentra únicamente la responsabilidad de definir y evaluar sus condiciones.
      • El service ahora solo se ocupa de orquestar el flujo y delega responsabilidades.
      • Atributo de calidad: alta cohesión al separar responsabilidades.
    • Principio Open-Closed (OCP)
      • Alerta está abierta a extenderse con nuevas implementaciones de CondicionAlerta, pero cerrada a su modificación.
      • Actualmente el sistema incluye “Humedad” y “Temperatura” con el Patrón Strategy.
      • Atributo de calidad: extensibilidad para nuevas condiciones de alerta.
  2. Patrón Adapter en la Clase Email
    Originalmente no había una tecnología específica para envío de correos, lo que acoplaba el dominio a la implementación.
    Justificación:

    • Se aplica el Patrón Adapter para desacoplar la lógica de dominio de la tecnología de envío.
    • Se implementa un adapter concreto JavaMailAdapter que implementa la interfaz IEmailSender.
    • El método enviar() de Email delega en emailSender.send(this).
    • Atributos de calidad:
      • Testeabilidad (se puede mockear la interfaz).
      • Extensibilidad para nuevos adapters concretos.
  3. Capa de Service
    Tras modificar el dominio, se ajusta la capa de Service y elimina los atributos de la clase Alerta, entre otros:

    • Se crea AlertaRepository (con su interfaz) para recuperar todas las alertas actuales.
    • AlertaService usa cumpleCondicionesAlerta() para procesar alertas con el paso del tiempo.
  4. DTOs

    • Se agregan los DTOs de input y output para Email para encapsular las entidades de dominio.
      Justificación: Disminuye el acoplamiento del dominio con datos específicos de entrada/salida del sistema.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant