Observadores en Java – Observable y Observer Ejemplo

Observadores en Java – Observable y Observer Ejemplo

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:

Desarrollo

Para comenzar vamos a describir un poco las clases de java que utilizaremos:

  • Inteface Observer
  • Esta interfaz se implementa para ser notificado de cambios sobre un objeto observable.
    Esta interfaz luce de la siguiente manera una vez implementada:

    
    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) {
            
        }
        
    }
    
  • Clase Observable
  • 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:

    Observadores en Java 1

    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.


    ¿Sabías que?

    ¿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

    El codigo de la clase que sera monitoreada llamada Observado que hereda de Observable

    
    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

    
    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

    
    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.

    Observadores en Java 2

    Resultado

    Clic para valorar esta información
    [Total: 0 Promedio: 0]