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
Como funciona
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