0

这是我的 Observer 和 Observable 接口

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);
}

如果我有两个相互了解的班级,这些工作就有效,但是,我该如何处理如下情况。

  • RootComposite(创建单词列表)
  • WordListComposite(创建一个单词)
    • 字对话框

现在,如果 RootCompoiste 需要了解 WordListComposite 的变化,我可以像下面这样实现它:

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();
}

...
}

这将按预期工作。

但是 RootComposite 如何从 WordDialog 接收更新?

在这种情况下,最好的方法是什么?

4

1 回答 1

0

WordListComposite 也可以实现 Observer 接口和 WordDialog Observable 接口。WordListComposite 可以观察 WordDialog,并且当它收到来自 WordDialog 的通知时,会触发向 RootComposite(正在观看 WordListComposite)的通知。基本上你有一个动作触发,然后只是将通知发送到树上。

于 2010-11-26T03:07:38.643 回答