Observer - Tensho97/Aprende-a-Aprender GitHub Wiki

Patrón Observer


Intención y motivación

Intención: Definir una dependencia 1:n de forma que cuando el objeto 1 cambie su estado, los n objetos sean modificados y se actualicen automáticamente.

Motivación: En un toolkit de GUI, separar los objetos de presentación (''vistas'') de los objetos de datos, de forma que se puedan tener varias vistas sincronizadas de los mismos datos (''editor-subscriptor'').

Ejemplo

Observer

Como funciona

Funcionamiento Observer

Por ejemplo

//Ejemplo de clase observada
class Observado extends Observable{
  ...
  setDatos(Algo x){
    y = x ;
    setChanged();
    notifyObservers();     //notifica a todos los observadores
  }
  ...
}
//Ejemplo de clase observadora
class Observador implements Observer{
  
  //objeto observado
  private Observado modelo;

  //constructor
  public Observador(Observado model){
    modelo = modelo;
    model.addObserver(this);  //Conecta vista con modelo
  }
  
  //metodo update
  update(Observable t, Object o) { //Invocada desde el modelo
    System.out.println(modelo.getDatos()
  }
}  

Cada vez que se actualice algo en clase observada, las clases observadoras se actualizaran con la nueva información.



Autor: Miguel