package class5_1_Observer; import java.util.HashSet; import java.util.Set; public abstract class PositionSubject { private Set observers = new HashSet(); public void addObserver(Observer o) { observers.add(o); // Because observer is a set, it // will only add if the observer is not already there. } public void removeObserver(Observer o) { observers.remove(o); // will not throw error if o is not already in the set. } /** * This method should be called once per * simulated second by the concrete subject. * @param position distance from start */ public void notifyObservers(double position) { for(Observer o: observers) { o.update(position); } } }