Java設計模式<觀察者模式>

Java設計模式<觀察者模式>

意圖

  • 定義對象間的一種一對多的依賴關系,當一個對象的狀態發生改變時,所有依賴于它的對象都得到通知并被自動更新

場景

  • 一個對象狀態改變給其他對象通知的問題,而且要考慮到易用和低耦合,保證高度的協作
  • 一個對象(目標對象)的狀態發生改變,所有的依賴對象(觀察者對象)都將得到通知,進行廣播通知

優點

  • 察者和被觀察者是抽象耦合的
  • 建立一套觸發機制

開發場景

應用一旦啟動,系統要做一系列的后續操作

Demo

定義觀察者

public interface Observer {

    public void update();
}


Tomcat


public class Tomcat {

    private boolean isStarted = false;

    private List<Observer> observers = new ArrayList<Observer>();

    public void attach(Observer observer){
        observers.add(observer);
    }

    public void notifyAllObservers(){
        for (Observer observer : observers) {
            observer.update();
        }
        observers.clear();
    }

    public boolean isStarted() {
        return isStarted;
    }

    public void setStarted(boolean started) {
        isStarted = started;
        if(isStarted)
            notifyAllObservers();
    }
}

測試類DemoMain

public class DemoMain {
    public static void main(String[] args) {
        Tomcat tomcat = new Tomcat();
        tomcat.attach(new Observer() {
            public void update() {
                System.err.println("post a request to baidu.com");
            }
        });

        tomcat.attach(new Observer() {
            public void update() {
                System.err.println("post a request to taobao.com");
            }
        });
        tomcat.setStarted(true);
     }
}

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容