net.eduvax.util
public interface Observer<T>
// Register an oberver to an observable.
Observable observable;
Observer observer;
// ...
observable.getObserverManager().add(observer);
warning: ObserverManager is memory less. a newly registered observable
will not recieve notification sent to manager before the registration.
Only notification comming after full registration will be recieved
(unless some side effect of multi-threading).
warning: Java does not allow multiple inheritance of the same generic interface
even using different type parameters (C# does). Since this interface only define one
methode, there's a simple workaround :
// can't declare:
// public class BiObs implements Observe<A>, Observer<B>
// so doing this way :
public class BiObs {
private void aChanged(A a) {
// get changes of A.
}
private void bChanged(B b) {
// get changes of B.
}
private Observer<A> aObs;
private Observer<B> bObs;
public BiObs(A a,B b) {
aObs=new Observer<A>() {
public void observableChanged(A a) {
aChanged(a)
}
}
bObs=new Observer<B>() {
public void observableChanged(B b) {
bChanged(b)
}
}
a.getObsManager().add(aObs);
b.getObsManager().add(bObs);
}
public void dispose() {
a.getObsManager().remove(aObs);
b.getObsManager().remove(bObs);
}
}| Modifier and Type | Method and Description |
|---|---|
void |
observableChanged(T sender)
Signal change of Observable.
|
void observableChanged(T sender)
sender - notification source.