1.概念
定義一種一對多的依賴關係,當一個對象的狀態發生改變時,所有依賴於它的對象都得到通知並被自動更新。
2.UML圖
3.代碼
interface Subject
{
public void attach(Observer observer);
public void detach(Observer observer);
void notifyObservers();
}
public class ConcreteSubject implements Subject
{
private Vector observersVector = new Vector();
public void attach(Observer observer) {
observersVector.addElement(observer);
}
public void detach(Observer observer){
observersVector.removeElement(observer);
}
public void notifyObservers(){
Enumeration enumeration = observersVector.clone()).elements();
while (enumeration.hasMoreElements()){
((Observer)enumeration.nextElement()).update();
}
}
}
public interface Observer {
void update();
}
public class ConcreteObserver1 implements Observer{
public void update() {
System.out.println("Obsver1 execute");
}
}
public class ConcreteObserver2 implements Observer{
public void update() {
System.out.println("Obsver2 execute");
}
}
public class Main {
public static void main(String[] args) {
ConcreteSubject concreteSubject = new ConcreteSubject ();
ConcreteObserver1 observer1 = new ConcreteObserver1();
ConcreteObserver2 observer2 = new ConcreteObserver2();
generator.addObserver(observer1);
generator.addObserver(observer2);
concreteSubject.notifyObservers();
}
}
4.應用情境
當對一個對象的改變需要同時改變其它對象,依賴於它的對象都需要改變時。