Skip to content

Conversation

@GabrielMJuarez
Copy link

Creo mediante un patron adapter, el adapter para email sender, donde gracias a este puedo tener distintas formas de enviar emails. Dejo planteado una forma “A”, donde si quisiera sumar una nueva forma de envio de emails a mi sistema solo bastaría con crear una clase “EmailSenderN” donde implementaría la misma, permitiéndome asi cumplir con el atributo de mantenibilidad.
Creo métodos para la clase “Clima” que me permitan tanto actualizar datos como setear y obtener las temperaturas en farenheit y Celsius, ya que al modificar alguna se debe modificar la otra para evitar inconsistencias.
Modifico emailService, donde incluyo el adapterSender para los email
ClimaService hace muchas cosas, por lo tanto intentando cumplir con los principios SOLID divido las responsabilidades donde ClimaService solo coordina, creo un ClimaProvider que se encarga de llamar a la API, este se implementa mediante una interfaz IClimaProvider por si el dia de mañana se quiere obtener el clima de otra forma. Tambien creo un mapper para convertir el wheaterResponse a Clima.
Luego de estos cambios ahora es mas fácil testear (ejemplo ClimaService mockeando un ClimaProvider), ClimaService depende de interfaces (ClimaProvider) y no de atributos particulares, cumpliento con el principio open close se pueden agregar distintos ClimaProvider sin tocar ClimaService, cumpliendo con el principio SRP cada clase tiene una única responsabilidad (consultar la API, mapear o coordinar)

@GabrielMJuarez GabrielMJuarez changed the title climAlertCritica Mejoras en entidades - K3052/3152 - Juarez Gabriel Jun 4, 2025
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