Haxe Code Cookbook
Haxe programming cookbookDesign patternsObserver

Observer

This is a basic example of the Observer design pattern in Haxe. The pattern makes use of an Observer interface and an Observable base class to notify objects when another object's property is changed so that they can react accordingly.

interface Observer {
  public function notified(sender:Observable, ?data:Any) : Void;
}

class Observable {
  private var observers:Array<Observer> = [];
  public function new() { }
  
  private function notify<T>(?data:T) {
    for(obs in observers)
      obs.notified(this, data);
  }
  
  public function addObserver(observer:Observer) {
    observers.push(observer);
  }
}

Usage

Notes

  • Extra care has to be put into making sure that an observable cannot register the same observer twice.
  • The fact that Observable is a class can make it hard to use because Haxe does not allow for multiple inheritance. Instead, we used a static extension for convenient usage.

Contributors:
Last modified:
Created:
Category:  Design patterns