Observable
- 创建被其他程序观察的子类
- 子类发生变化时,观察类会注意到,观察类必须实现Observer接口,观察者注意到被观察者发生变化时会调用update()方法
- 被观察者发生变化时要调用setChange方法
- 被观察者需要调用notifyObservables()进行通知,观察者会调用update方法
- 可以设置添加多个观察者
使用示例
实现Observer接口
public class Watcher implements Observer{
@Override
public void update(Observable o, Object arg) {
System.out.println(o);
System.out.println(arg);
System.out.println("update()\t" + arg);
}
}
继承Observable类
public class BeingWatcher extends Observable{
public void counter(int period) {
for(;period > 0;period--) {
setChanged();
notifyObservers(period);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
测试方法
BeingWatcher b = new BeingWatcher();
Watcher w = new Watcher();
b.addObserver(w);
b.counter(10);
输出
observable.BeingWatcher@2077d4de
10
update() 10
observable.BeingWatcher@2077d4de
9
update() 9
observable.BeingWatcher@2077d4de
8
update() 8
observable.BeingWatcher@2077d4de
7
update() 7
observable.BeingWatcher@2077d4de
6
update() 6
observable.BeingWatcher@2077d4de
5
update() 5
observable.BeingWatcher@2077d4de
4
update() 4
observable.BeingWatcher@2077d4de
3
update() 3
observable.BeingWatcher@2077d4de
2
update() 2
observable.BeingWatcher@2077d4de
1
update() 1