import java.util.ArrayList;
import java.util.Iterator;

public class Observable implements QuackObservable {
    ArrayList<Observer> observers = new ArrayList<Observer>();
    QuackObservable duck;

    public Observable(QuackObservable duck) {
        this.duck = duck;
    }

    public void registerObserver(Observer observer) {
        observers.add(observer);
    }

    public void notifyObservers() {
        Iterator iterator = observers.iterator();
        while (iterator.hasNext()) {
            Observer observer = (Observer)iterator.next();
            observer.update(duck);
        }
    }
}

  1. import java.util.ArrayList; import java.util.Iterator;
  2. public class Observable implements QuackObservable {
  3. ArrayList<Observer> observers = new ArrayList<Observer>();
  4. QuackObservable duck;
  5. public Observable(QuackObservable duck) { this.duck = duck; }
  6. public void registerObserver(Observer observer) { observers.add(observer); }
  7. public void notifyObservers() { ... }
  8. Iterator iterator = observers.iterator(); while (iterator.hasNext()) { ... }
  9. Observer observer = (Observer)iterator.next();
  10. observer.update(duck);
  11. }
  12. }