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