觀察者模式

  1. 抽象被觀察者
public abstract class AbstractObservable {
    //觀察者列表
    private List<IObserver> observerList = new ArrayList<>();
    //添加觀察者
    public void addObservable(IObserver observer) {
        this.observerList.add(observer);
    }
    //刪除觀察者
    public void deleteObservable(IObserver observer) {
        this.observerList.remove(observer);
    }
    //通知所有觀察者
    public void notifyObservers(String content) {
        for (IObserver observer : this.observerList) {
            observer.update(content);
        }
    }
    //業(yè)務邏輯處理
    public abstract void doSomething();
}
  1. 具體被觀察者角色
public class ConcreteObservable extends AbstractObservable {
    @Override
    public void doSomething() {
        //通知觀察者
        super.notifyObservers("通知觀察者");
    }
}
  1. 觀察者接口或抽象類
public interface IObserver {
    //觀察者更新狀態(tài)
    void update(String content);
}
  1. 觀察者接口或抽象類實現(xiàn)類
public class ConcreteObserver implements IObserver {
    @Override
    public void update(String content) {
        //收到被觀察者發(fā)來的消息
    }
}
  1. 場景使用
    //定義觀察者與被觀察者
    IObserver observer = new ConcreteObserver();
    AbstractObservable observable = new ConcreteObservable();
    //添加到被觀察者之中
    observable.addObservable(observer);
    //事件觸發(fā)
    observable.doSomething();
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容

  • 1 場景問題# 1.1 訂閱報紙的過程## 來考慮實際生活中訂閱報紙的過程,這里簡單總結(jié)了一下,訂閱報紙的基本流程...
    七寸知架構(gòu)閱讀 4,688評論 5 57
  • 觀察者模式定義了一種一對多的依賴關(guān)系,讓多個觀察者對象同時監(jiān)聽某一個主題對象。這個主題對象在狀態(tài)上發(fā)生變化時,會通...
    扈扈哈嘿閱讀 1,354評論 0 12
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,991評論 19 139
  • 定義:觀察者模式定義了一種一對多的依賴關(guān)系,讓多個觀察者對象同時監(jiān)聽某一個主題對象。這個主題對象在狀態(tài)上發(fā)生變化時...
    明朗__閱讀 189評論 0 0
  • 觀察者模式 Rxjava中運用到了觀察者模式,那什么是觀察者模式呢,現(xiàn)在來學習一下。正所謂觀察,就是看,細察事物的...
    cgzysan閱讀 578評論 0 4