En este Articulo de Observadores en Java veremos el uso de dos clases: Observable y Observer, las cuales utilizaremos en un ejemplo practico y sencillo para explicar el funcionamiento de estas. Supongamos que tenemos una clase que queremos que sea monitoreada (Observable) por otras clases (Observer) en la arquitectura de tu programa, y que cuando esta clase monitoreada tenga modificaciones estas sean difundidas a las clases que la observan, observadores. Este problema es resuelto por este par de clases (observable y observer) encontradas en el paquete java.util.* el cual facilita esta tarea, asi que vamos a el ejemplo para entender los observadores en java, comencemos…
Requerimientos:
- Algun entorno para programar como eclipse, Netbeans o simplemente un editor de texto como Notepad ++
Desarrollo
Para comenzar vamos a describir un poco las clases de java que utilizaremos:
Esta interfaz se implementa para ser notificado de cambios sobre un objeto observable.
Esta interfaz luce de la siguiente manera una vez implementada:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | package jonathanmelgoza.com.blog; import java.util.Observable; import java.util.Observer; /** * * @author Jonathan */ public class Observador implements Observer{ @Override public void update(Observable o, Object arg) { } } |
Esta clase representa un objeto que puede ser observado o monitoreado de acuerdo al paradigma modelo-vista, representa un objeto que la aplicacion quiere observar y ser notificada de cambios, un objeto observable puede ser observado por uno o mas observadores. Despues de que ub objeto observable produce cambios entonces se llama al metodo notifyObservers que causa que todos los observadores sean notificados de el cambio llamando a su metodo update.
Ahora que conocemos las clases involucradas para manejar observadores en java vamos a realizar un sencillo ejemplo.
La estructura de el ejemplo es la siguiente:

donde:
Main -> Es la clase principal donde se inicializan los objetos y agregamos el observador al observado
Observado -> Es la clase que sera monitoreada
Observador -> Es la clase que monitorizara la clase observada.
El codigo de la clase que sera monitoreada llamada Observado que hereda de Observable
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | package jonathanmelgoza.com.blog; import java.util.Observable; /** * * @author Jonathan */ public class Observado extends Observable{ String mensaje; public Observado(){ mensaje = "Objeto Observado Iniciado"; } public void cambiarMensaje(String m){ mensaje = m; //Marcamos el objeto observable como objeto que ha cambiado setChanged(); //Notificamos a los observadores y le enviamos el nuevo valor notifyObservers(mensaje); //notifyObservers(); Este metodo solo notifica que hubo cambios en el objeto } } |
El codigo de la clase que monitorizara la clase observada llamada Observador que implementa Observer
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | package jonathanmelgoza.com.blog; import java.util.Observable; import java.util.Observer; /** * * @author Jonathan */ public class Observador implements Observer{ @Override public void update(Observable o, Object arg) { System.out.println("Nueva Actualizacion: "+o+" -> "+arg); } } |
Ahora el codigo de la clase Main que inicializara los objetos y agregara el observador al objeto observado
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | package jonathanmelgoza.com.blog; /** * * @author Jonathan */ public class Main { public static void main(String args[]){ Observado observado = new Observado(); Observador observador = new Observador(); observado.addObserver(observador); observado.cambiarMensaje("Cambio 1"); observado.cambiarMensaje("Cambio 2"); observado.cambiarMensaje("Cambio 3"); } } |
Ahora ejecutamos y observamos que se recibieron 3 actualizaciones al modificar 3 veces el objeto observado.


¿Necesitas aprender algo nuevo ? Ve a Udemy, busca el tema del que quieres aprender, selecciona el curso para ti y continua con tu aprendizaje.
Udemy
4 Comentarios