import java.util.*; interface ISubject { public void attach(IObserver observer); public void detach(IObserver observer); public void notifyObservers(); public void setState(int state); } interface IObserver { public void update(); } public class Observer { public static void main(String[] args) { ISubject sub = new Subject(); sub.attach(new ObserverOne()); sub.attach(new ObserverTwo()); sub.setState(10); } } class Subject implements ISubject { private int state = 0; private List<IObserver> observers = new ArrayList<IObserver>(); public int getState() { return state; } @Override public void setState(int state) { this.state = state; this.notifyObservers(); } @Override public void attach(IObserver observer) { this.observers.add(observer); } @Override public void detach(IObserver observer) { this.observers.remove(observer); } @Override public void notifyObservers() { for (IObserver ob : observers) ob.update(); } } class ObserverOne implements IObserver { @Override public void update() { System.out.println("ObserverOne receive notify..."); } } class ObserverTwo implements IObserver { @Override public void update() { System.out.println("ObserverTwo receive notify..."); } }
* 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新。