Java
Interface
java.util.Observer
• Mecanismo que permite alertar a unos
objetos del comportamiento de otro
• Debe implementarla cualquier clase que
desee ser observadora
–Usado en MCV
– Cuando un objeto se modifica, puede avisar a
otros objetos para que actúen en consecuencia
public interface Observer {
public void update(Observable,Object)
}
• Observable:objeto cuyo comportamiento
queremos observar
• Observador: objeto que está pendiente del
comportamiento de un observable
1
3
Clase
java.util.Observable
Comportamiento del
modelo dedependencias
• Superclase de cualquier clase que desee ser
observada
• Metodos de instancia
• Un objeto observable informa que ha
cambiado con
void
void
void
void
void
void
voidsetChanged()
• avisa a los observadores con uno de entre
addObserver(Observer)
deleteObserver(Observer)
deleteObservers()
setChanged()
notifyObservers()
notifyObservers(Object)
voidnotifyObservers()
void notifyObservers(Object)
• y los observadores reciben
void update(Observable,Object)
2
4
1
Ejemplo. Pedal y aguja
cuentarevoluciones
p
Ejemplo. El observable
Pedal deacelerador
1000p1/2
5
Ejemplo. El observador
Aguja cuentarevoluciones
public class Pedal extends Observable {
public Pedal() {
fuerza = 0;
}
public void acelera(int x) {
fuerza += x;setChanged();
notifyObservers();
}
public void desacelera(int x) {
fuerza -= x;
setChanged();
notifyObservers(new Integer(fuerza));
}
public int pedal() {
return fuerza;
}
}
7Ejemplo. Todo junto
import java.util.*;
public class AgujaRev implements Observer {
private int rev;
public AgujaRev() {
rev = 0;
}
public int revoluciones() {
return rev;
}
public voidupdate(Observable ob, Object o) {
if (ob!=null)
rev = (int)(1000*Math.sqrt(((Pedal)ob).pedal()));
}
}
6
public class PrPedal {
public static void main(String[] args) {
Pedal p = new Pedal();...
Regístrate para leer el documento completo.