代码之家  ›  专栏  ›  技术社区  ›  jax

对彼此不直接了解的对象使用观察者模式

  •  0
  • jax  · 技术社区  · 15 年前

    这是我的观察者和可观察的接口

    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(创建单词)
      • 文字对话框

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

    这将如预期的那样工作。

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

    1 回复  |  直到 15 年前
        1
  •  0
  •   Jeremy Raymond    15 年前

    WordListComposite还可以实现Observer接口,WordDialog实现Observable接口。WordListComposite可以观察WordDialog,当它收到来自WordDialog的通知时,会触发一个通知到RootComposite(谁在监视WordListComposite)。基本上你有一个动作火,然后把通知发送到树上。