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