0

これが私のオブザーバーとオブザーバブルのインターフェースです

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

これらは、お互いを認識している 2 つのクラスがある場合に機能しますが、以下のような状況をどのように処理すればよいでしょうか。

  • 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 に答える