要求:被观察者中有一个int i初始为10,i每次递减直到等于0为止,第一个观察者打印i的变化过程,第二个观察者当i变为5时才开始打印。
被观察者的代码
import java.util.Observable;
public class Watched extends Observable
{
private static int i =10;
@Override
public void notifyObservers(Object i)
{
super.notifyObservers(i);
}
public static void main(String[] args)
{
Watcher1 watcher1 = new Watcher1();
Watcher2 watcher2 = new Watcher2();
Watched watched = new Watched();
watched.addObserver(watcher1);
watched.addObserver(watcher2);
while(i>0)
{
watched.setChanged();
watched.notifyObservers(i);
i--;
}
}
}
第一个观察者的代码
import java.util.Observable;
import java.util.Observer;
public class Watcher1 implements Observer
{
@Override
public void update(Observable o, Object arg)
{
System.out.println(arg);
}
}
第二个观察者的代码
import java.util.Observable;
import java.util.Observer;
public class Watcher2 implements Observer
{
@Override
public void update(Observable o, Object arg)
{
int i = (Integer)(arg);
if(i<6)
System.out.println(i);
}
}