观察者模式分为观察者(被通知并执行)和被观察者(添加观察者列表,事件触发通知)两部分,在java、.net等事件处理中使用广泛
观察者抽象类
public abstract class Observer {
public abstract void Update();
}
观察者A
public class ObserverA extends Observer {
@Override
public void Update() {
System.out.println("This is ObserverA Update");
}
}
观察者B
public class ObserverB extends Observer {
@Override
public void Update() {
System.out.println("This is ObserverB Update");
}
}
观察者C.......
被观察者
public class Observed {
List<Observer> list = new ArrayList<Observer>();
public void AddObserver(Observer o) {
list.add(o);
}
public void RemoveObserver(Observer o) {
list.remove(o);
}
public void Notify() {
for (Observer o : list) {
o.Update();
}
}
}
执行
public static void main(String[] args) {
Observed observed = new Observed();
observed.AddObserver(new ObserverA());
observed.AddObserver(new ObserverB());
observed.Notify();
}
观察者抽象类替换成观察者接口就是监听器了
public interface Observer {
public void Update();
}
public static void main(String[] args) {
Observed observed = new Observed();
observed.AddObserver(new Observer() {
@Override
public void Update() {
System.out.println("This is ObserverA Update");
}
});
observed.AddObserver(new Observer() {
@Override
public void Update() {
System.out.println("This is ObserverB Update");
}
});
observed.Notify();
}