Observer Pattern:
Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically.
Frequency of use: high
Participants:
1.Subject2.Observer3.ConcreteSubject4.ConcreteObserver
(1)Subject
import java.util.*;public abstract class Subject{ protected ArrayList observers = new ArrayList(); public abstract void attach(Observer observer); public abstract void detach(Observer observer); public abstract void notify();}
(2)Observer
public interface Observer{ public void update();}
(3)ConcreteSubject
public class ConcreteSubject extends Subject{ public void attach(Observer observer) { observers.add(observer); } public void detach(Observer observer) { observers.remove(observer); } public void notify() { for(Object obs:observers) { ((Observer)obs).update(); } } }
(4)ConcreteObserver
public class ConcreteObserver implements Observer{ public void update() { //具体更新代码 }}
(5)Test
Subject subject = new ConcreteSubject();Observer observer = new ConcreteObserver();subject.attach(observer);subject.notify();