Here are my Observer and Observable interfaces
public interface Observable<T> {
void addObserver(Observer<T> o);
void removeObserver(Observer<T> o);
void removeAllObservers();
void notifyObservers();
}
public interface Observer<T> {
public void update(Observable<T> o);
}
These work if I have two classes that know about each other, however, how do I handle a situation like below.
- RootComposite (Creates a Word List)
- WordListComposite (Creates a Word)
- WordDialog
Now if RootCompoiste needs to know about changes in WordListComposite, I can implement it like that following:
public class RootComposite extends Composite implements Observer<WordListComposite > {
public RootComposite() {
WordListComposite wl = new WordListComposite();
wl.addObserver(this);
}
...
@Override
public void update(WordListComposite o) {
this.lblMessage = o.getMessage();
}
...
}
This will work as expected.
But how does RootComposite receive updates from WordDialog?
What is the best approach in this case?