设计模式复习,代码是最好的说明。
定义:观察者模式定义对象间一种一对多的依赖关系,使得当每一个对象改变状态,则所有依赖于它的对象都会得到通知并自动更新,属于行为类模式。
注意:观察者模式和发布订阅模式是有区别的,区别在于观察者模式是由目标进行调度,而发布订阅模式是由独立的调度中心进行调度,可以说发布订阅模式是观察者模式进一步解耦,在实际中被大量运用的一种模式。
UML:
代码:
abstract class Subject{
private Vector<Observer> vector = new Vector<Observer>();
public void addObserver(Observer observer){
this.vector.add(observer);
}
public void deleteObserver(Observer observer){
this.vector.remove(observer);
}
protected void notifyObserver(){
for (Observer observer:vector){
observer.update();
}
}
abstract void doSomething();
}
class ConcreteSubject extends Subject{
void doSomething() {
System.out.println("被观察者事件发生");
this.notifyObserver();
}
}
interface Observer{
void update();
}
class ConcreteObserver1 implements Observer{
public void update() {
System.out.println("观察者1收到");
}
}
class ConcreteObserver2 implements Observer{
public void update() {
System.out.println("观察者2收到");
}
}
http://blog.csdn.net/itachi85/article/details/50773358
http://www.cnblogs.com/lovesong/p/5272752.html
http://geeksun.iteye.com/blog/2232298
如有错误,欢迎指出!