lunes, 8 de junio de 2020

Diseño de Patrones con Java: Patrón Observador

 
Los ingenieros de software se enfrentaron a un  problema comun durante el desarrollo de un producto software, no habia estandares para instruirlos sobre como diseñar y proceder ante diferentes problemas; los diseños de patrones abordan esos problemas que usualmente nos vamos a encontrar al momento de programar.

Ejercicio 1

Patron observador
En este se define una dependencia de uno a muchos objetos, de tal manera que cuando un objeto cambie de estado; sus dependientes son notificados y actualizados automaticamente.

En este patron hay muchos observadores que observan un sujeto particular, que tambien es un objeto; estos observadores quieren saber cuando se realice un cambio en este sujeto y reciben notificaciones ante cualquier cambio, entonces se registran a este sujeto y cuando pierden interes anulan su registro y dejan de recibir notificaciones, este modelo es conocido tambien como Editor Suscriptor.

Un ejemplo seria las interfaces graficas que ante cualquier cambio en una base de datos o ejecutar alguna consulta; reflejan los resultados en la interfaz de usuario actualizando de acuerdo con los cambios que se obtenga en la base de datos.

En este ejemplo se va crear un sujeto que mantiene una lista de observadores, estos recibiran notificacion cuando un valor cambie, en este caso vamos a dar 3 valores uno de 5 y otro de 25 para ser notificado y si cambia a 50, pues ya no le interesa al observador entonces se elimina su registro del sujeto y ya no recibe notificaciones.


El diagrama de clases UML es el siguiente



Implementación
   
(mostrar mi codigo) 

Salida

(captura de pantalla de la salida)

Esta salida es muy simple, pero nos enseña que es lo que hace el patron observador, ahora debemos asumir: primero, tener una clase observador multiple y segundo, queremos saber que cambios pueden tener y  las notificaciones que vamos a recibir; Tendremos los siguientes:

List<IObserver> observersList=new ArrayList<IObserver>();

reemplazamos el “Observer” por su interfaz que llamamos “IObserver”; y cambiamos nuestra funcion de actualizacion para ver los cambios en los observadores.











El diagrama UML queda asi.

 

Implementacion
(Escribir codigo)

Salida:

Mostrar su salida


Ahora lo que hacemos es implementar un patron observador que tenga multiples observadores y multiples sujetos.
























El diagrama UML es el siguiente:



Y su implementacion seria:

(mostrar codigo)

Y su salida correspondiente es.