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);
    }
  }
}