觀察者模式(observer pattern)

理解觀察者模式

當被觀察者數據發生變化了以後通知觀察者,觀察者可以做出響應的處理,這是一個一對多的過程。其實就是通知,觀察者在被觀察者那裏留一個地址,然後被觀察者可以根據所有觀察者留下的地址給他們發送通知。

java實現

自己實現這個模式也很簡單,不過java給我們提供了工具類用於線程安全的實現觀察者模式

import java.util.Observable;
public class MyObservable extends Observable {
    public void pushMessage(){
        // 手動調用改變方法,不然不會通知觀察者,保證併發的設計
        setChanged();
        // 通知觀察者
        notifyObservers("消息改變了");
    }
}
import java.util.Observable;
import java.util.Observer;

public class MyObserver implements Observer {
    private String name;
    MyObserver(String name){
        this.name=name;
    }
    @Override
    public void update(Observable o, Object arg) {
        System.out.println(name+"接收到消息:"+arg);
    }
}
@Test
public void test001(){
    Observable observable= new MyObservable();
    Observer observer= new MyObserver("張三");
    Observer observer2= new MyObserver("李四");
    observable.addObserver(observer);
    observable.addObserver(observer2);
    ((MyObservable) observable).pushMessage();
}

現實考慮

現實開發基本不會有這種寫法,因爲觀察者與被觀察者之間很可能是跨系統,基本不可能是在一個jvm中存在的對象。

但是核心思想我們是可以利用的,要實現觀察者模式,或者發佈-訂閱,我們可以將觀察者列表保存在數據庫中,當被觀察者需要通知觀察者的時候去數據庫查詢要通知的觀察者,然後給他們發送消息(推送等)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章