public class GooseAdapter implements Quackable {
    Goose goose;
    Observable observable;

    public GooseAdapter(Goose goose) {
        this.goose = goose;
        observable = new Observable(this);
    }

    public void quack() {
        goose.honk();
        notifyObservers();
    }

    public void registerObserver(Observer observer) {
        observable.registerObserver(observer);
    }

    public void notifyObservers() {
        observable.notifyObservers();
    }

    @Override
    public String toString() {
        return "Goose pretending to be a Duck!";
    }
}

  1. public class GooseAdapter implements Quackable {
  2. Goose goose;
  3. Observable observable;
  4. public GooseAdapter(Goose goose) { this.goose = goose; observable = new Observable(this); }
  5. public void quack() { goose.honk(); notifyObservers(); }
  6. public void registerObserver(Observer observer) { observable.registerObserver(observer); }
  7. public void notifyObservers() { observable.notifyObservers(); }
  8. @Override public String toString() { return "Goose pretending to be a Duck!"; }
  9. }