Observer模式,.net和java中的“委托事件模型”我感觉就属于一种教复杂的observer模式。Observer模式包含被观察对象和观察者,当被观察对象发生任何变化时能及时通知观察者。我们需要被观察者和观察者直接建立关系。对于这种关系的建立我们可以有两种方法,一种就是被观察者知道观察者,他每次有什么事情都会去通知观察者;另一种就是被观察者不知道观察者,观察者通过某些工具悄悄的窥探被观察者的隐私。
package Test; import java.util.*; public class LazyStudent implements Observer { String name; public LazyStudent(String Name) { name = Name; } @Override public void update(Observable o, Object arg) { System.out.println(name + ",老师来了!"); } } package Test; import java.util.Observable; public class Monitor extends Observable { public void Observe() { this.setChanged(); } } package Test; import java.util.*; public class MainTest { public static void main(String[] args) { Monitor monitor = new Monitor(); LazyStudent Lily = new LazyStudent("Lily"); LazyStudent Bill = new LazyStudent("Bill"); monitor.addObserver(Lily); monitor.addObserver(Bill); monitor.Observe(); monitor.notifyObservers(); } }
Java中对Observer模式的简单实现:类java.util.Observerable和接口java.util.Observer。
Obverser模式主要解决在对象间的状态映射或者镜像的问题。