Estoy tratando de entender el Observador y el Observable.Observable en Java
He aquí un ejemplo que estoy tratando de averiguar:
public class IntegerDataBag extends Observable implements Iterable<Integer> {
private ArrayList<Integer> list= new ArrayList<Integer>();
public void add(Integer i){
list.add(i);
setChanged();
notifyObservers();
}
public Iterator<Integer> iterator(){
return list.iterator();
}
public Integer remove (int index){
if (index< list.size()){
Integer i = list.remove(index);
setChanged();
notifyObservers();
return i;
}
return null;
}
}
public class IntegerAdder implements Observer {
private IntegerDataBag bag;
public IntegerAdder(IntegerDataBag bag) {
this.bag = bag;
bag.addObserver(this);
}
public void update(Observable o, Object arg) {
if (o == bag) {
System.out.println("The contents of the IntegerDataBag have changed");
}
}
}
El
bag.addObserver()
se pueden hacer sólo porqueIntegerDataBag
extiendeObservable
?¿Dónde se va a agregar este observador? ¿Qué se está creando y dónde?
¿Cuál es la diferencia entre
setChanged()
ynotifyObservers()
?No entiendo el método
update
; ¿Qué significaarg
? ¿Por qué tengo que verificar queo==bag
? ¿Por qué debería actualizar otro observable?¿Por qué debería necesitar este observador de todos modos?
Este es uno de los pocos patrones que solo se puede entender mejor cuando llega al punto en que * realmente * necesita usar uno en su proyecto existente. – BalusC
Me gusta en MVC, por ejemplo. Pruebe este código: http://www.emilmont.net/doku.php?id=java:design_patterns:model_view_controller –