观察者模式,有主题和观察对象,一旦主题发生变化,将通知观察者,然后观察者再做出相应操作。
public interface Observer {
void update(int num);
}
public class DogObserver implements Observer {
public void update(int num) {
System. out.println("dog catch:" + num);
}
}
public class CatObserver implements Observer {
public void update(int num) {
System. out.println("cat catch:" + num);
}
}
public interface Subject {
void registerObject(Observer o);
void removeObserver(Observer o);
void setChange(int num);
}
public class ConcreteSubject implements Subject {
List obseverList = new ArrayList ();
public void registerObject(Observer o) {
obseverList.add(o);
}
public void removeObserver(Observer o) {
obseverList.remove(o);
}
public void setChange(int num) {
Iterator it = obseverList.iterator();
while(it.hasNext()) {
((Observer)it.next()).update(num);
}
}
}
public class Client {
public static void main(String[] args) {
Observer dog = new DogObserver();
Observer cat = new CatObserver();
Subject subject = new ConcreteSubject();
subject. registerObject(dog);
subject. registerObject(cat);
subject.setChange(1);
subject.setChange(2);
}
}