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.