Java中的Observable和Observer(观察者模式)

观察者模式介绍

        在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

相关文章
相关标签/搜索