|
|
|
@ -1,19 +1,17 @@
|
|
|
|
package _9._3;
|
|
|
|
package _9._3.observer;
|
|
|
|
|
|
|
|
|
|
|
|
import provided._9.Observer;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
|
|
|
|
public abstract class Observable {
|
|
|
|
public abstract class Observable<Who extends Observable<Who, What>, What> {
|
|
|
|
private List<Observer> observers = new ArrayList<>();
|
|
|
|
private List<Observer<Who, What>> observers = new ArrayList<>();
|
|
|
|
private boolean changed = false;
|
|
|
|
private boolean changed = false;
|
|
|
|
|
|
|
|
|
|
|
|
public void addObserver(Observer o) {
|
|
|
|
public void addObserver(Observer<Who, What> o) {
|
|
|
|
this.observers.add(o);
|
|
|
|
this.observers.add(o);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void removeObserver(Observer o) {
|
|
|
|
public void removeObserver(Observer<Who, What> o) {
|
|
|
|
this.observers.remove(o);
|
|
|
|
this.observers.remove(o);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@ -29,10 +27,10 @@ public abstract class Observable {
|
|
|
|
return changed;
|
|
|
|
return changed;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void notifyObservers(ShipEvent what) {
|
|
|
|
public void notifyObservers(What what) {
|
|
|
|
if (this.isChanged()) {
|
|
|
|
if (this.isChanged()) {
|
|
|
|
for (Observer observer : observers) {
|
|
|
|
for (Observer<Who, What> observer : observers) {
|
|
|
|
observer.update(this, what);
|
|
|
|
observer.update((Who) this, what);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
this.clearChanged();
|
|
|
|
this.clearChanged();
|
|
|
|
}
|
|
|
|
}
|