在Java中经过Observable类和Observer接口实现了观察者模式。一个Observer对象监视着一个Observable对象的变化,当Observable对象发生变化时,Observer获得通知,就能够进行相应的工做。java
若是画面A是显示数据库里面的数据,而画面B修改了数据库里面的数据,那么这时候画面A就要从新Load。这时候就能够用到观察者模式数据库
如下例子演示Observable和Observer的使用ide
import java.util.Observable; import java.util.Observer; public class MainClass { public static void main(String[] args) { BeingWatch beingWatch = new BeingWatch(); //Observable中使用vector来管理加入的Observer对象, //并且update从最后加入的Observer对象开始 beingWatch.addObserver(new Watcher_1()); beingWatch.addObserver(new Watcher_2()); beingWatch.count(10); System.out.println("Final line in the main function..."); } } class BeingWatch extends Observable { public void count(int num) { for (; num >= 0; num--) { setChanged(); notifyObservers(num); } } } class Watcher_1 implements Observer { @Override public void update(Observable o, Object arg) { System.out.println("Watcher_1 count: " + arg); } } class Watcher_2 implements Observer { @Override public void update(Observable o, Object arg) { if (((Integer)arg).intValue() <= 5) { System.out.println("Watcher_2 count: " + arg); } } }
输出结果————spa
Watcher_1 count: 10
Watcher_1 count: 9
Watcher_1 count: 8
Watcher_1 count: 7
Watcher_1 count: 6
Watcher_2 count: 5
Watcher_1 count: 5
Watcher_2 count: 4
Watcher_1 count: 4
Watcher_2 count: 3
Watcher_1 count: 3
Watcher_2 count: 2
Watcher_1 count: 2
Watcher_2 count: 1
Watcher_1 count: 1
Watcher_2 count: 0
Watcher_1 count: 0
Final line in the main function...code