import java.util.ArrayList;
import java.util.List;
/**
* 观察者模式
* @author TMAC-J
* 牵一发而动全身来形容观察者模式在合适不过了
* 分为拉模式和推模式,这里不详细说了
*/
public class ObserverPattern {
interface IObserved{
void addObserver(IObserver observer);
void removeObserver(IObserver observer);
void notifyObservers();
}
public class Observed implements IObserved{
private List<IObserver> observers = new ArrayList<IObserver>();
@Override
public void addObserver(IObserver observer) {
observers.add(observer);
}
@Override
public void removeObserver(IObserver observer) {
observers.remove(observer);
}
@Override
public void notifyObservers() {
for(IObserver observer:observers){
observer.update();
}
}
}
interface IObserver{
void update();
}
public class Observer implements IObserver{
@Override
public void update() {
System.out.println("do update...");
}
}
public void test(){
IObserved observed = new Observed();
IObserver observer = new Observer();
observed.addObserver(observer);
observed.notifyObservers();
}
}