Listato 6. Contenente i metodi necessari per la registrazione degli observer
class Observable {
// lista degli observer
private var observers:Array;
public function Observable() {
observers = new Array();
}
// aggiunge un osservatore alla lista degli observer
// @param observer observer aggiunto
public function aggiungiObserver(observer):Boolean {
// non può memorizzare un valore nullo!
if (observer == null) {
return false;
}
// evita di memorizzare la stessa istanza più volte
for (var i:Number = 0; i<observers.lenght; i++) {
if (observers[i] == observer) {
return false;
}
}
observers.push(observer);
}
// rimuove un observer dalla lista
// @param observer observer aggiunto
public function rimuoviObserver(observer):Boolean {
var len:Number = observers.length;
for (var i:Number = 0; i<len; i++) {
if (observers[i] == observer) {
observers.splice(i, 1);
return true;
}
}
return false;
}
// avverte gli observer che il soggetto è cambiato
// @param infoObj un oggetto da passare agli observer contenente dati
public function notificaObservers(infoObj:Object):Void {
// invoco update() su tutti gli observer
for (var i:Number = observers.length-1; i>=0; i--) {
observers [i].update(this, infoObj);
}
}
}