linsea 发表于 2013-2-3 14:36:21

java内置观察者模式学习小实例

package desginpattern.obverser;/* Demonstrate the Observable class and theObserver interface.NOTES: 被观察者的设计:1.扩展Observable类.2.如果它已经改变,必须调用setChanged()方法.3.当它准备通知观察者时,必须调用notifyObserver(Object obj)或notifyObserver()方法,这将导致观察者的update()方法调用. 观察者的设计:1.实现Observer接口.2.改写此接口的唯一方法: void update(Observable observOb, Object arg)3.参数observOb是被观察对象,arg是观察者传递过来的对象,此时可对它进行相应的处理.*/import java.util.*;//This is the observing class.class Watcher implements Observer { public void update(Observable obj, Object arg) {//改写此方法.System.out.println("update() called, count is "    + ((Integer) arg).intValue()); //对传递进来的参数编程. }}//This is the class being observed.class BeingWatched extends Observable { void counter(int period) {for (; period >= 0; period--) {   setChanged();       //先调用此方法.   notifyObservers(new Integer(period)); //再通知,否则一切无用.   try {    Thread.sleep(100);   } catch (InterruptedException e) {    System.out.println("Sleep interrupted");   }} }}public class ObserverDemo { public static void main(String args[]) {BeingWatched observed = new BeingWatched();Watcher observing = new Watcher();/* Add the observing to the list of observers for   observed object.*/observed.addObserver(observing); //把观察者(如果有多个)都添加进被观察者的订阅列表中.observed.counter(10); }} 
页: [1]
查看完整版本: java内置观察者模式学习小实例