簡體   English   中英

具有多個可觀察的單個觀察者

[英]Single observer with multiple observable

我想知道觀察者設計模式的實現是什么。 通常我們在Observable中維護一個觀察者列表,並從其通知中調用觀察者的更新方法。

那么這種情況下的設計是什么? 我應該在觀察員中保留一個可觀察的清單嗎? 但是在更新方法中我怎么知道哪個observable調用了這個觀察者的更新。

請分享您的想法。

謝謝,

通常,觀察者持有對觀察者的引用。 在你的情況下,這可能是一個列表。 在任何情況下,更新的第一個參數是可觀察的。

所以這是一種方式:

import java.util.Observable;
import java.util.Observer;
enum Observables {
    o1,o2
}
class MyObservable extends Observable {
    public MyObservable(Observables observables) {
        this.observables=observables;
    }
    public void setChangedAndNotify(Object object) {
        setChanged();
        notifyObservers(object);
    }
    final Observables observables;
}
class MyObserver implements Observer {
    @Override public void update(Observable o,Object arg) {
        switch(((MyObservable)o).observables) {
            case o1:
                System.out.println(((MyObservable)o).observables);
                break;
            case o2:
                System.out.println(((MyObservable)o).observables);
                break;
        }
    }
}
class so56200126_single_observer_with_multiple_observable {
    public static void main(String[] args) throws InterruptedException {
        MyObservable myObservable1=new MyObservable(Observables.o1);
        MyObservable myObservable2=new MyObservable(Observables.o2);
        MyObserver myObserver=new MyObserver();
        myObservable1.addObserver(myObserver);
        myObservable2.addObserver(myObserver);
        myObservable1.setChangedAndNotify(null);
        myObservable2.setChangedAndNotify(null);
        Thread.sleep(1);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM