Observable(可观察的)类可以把对象的变化传递给其他的对象(观察者对象)(一个或多个)要实现对象(被观察者)变化时通知另个对象(观察者)它已经发生变化的功能,被观察者类要继承Observable类,观察者类要实现Observer接口下面以老鼠作为被观察者,猫作为观察者举例来说明具体实现方法:
被观察者类: (Rat.java)import java.util.Observable;
//被观察者类要继承Observable类
public class Rat extends Observable
{
 String status="老鼠在洞中.";
 
 public void change()
 {
  status="老鼠到了洞外!";
  setChanged(); //把当前对象设置为发生了变化的
  notifyObservers();//调用观察对象的update()
 }
 
 public void showStatus()
 {
  System.out.println(status);
 } 
}
观察者类: (Cat.java)import java.util.Observer;
import java.util.Observable;//观察者需要实现接口Observer
public class Cat implements Observer
{
 String think;
 public Cat()
 {
  think="老鼠为什么呆在洞里不出来?";
 }
 
 //接口需要实现的唯一方法,当被观察对象有变化时自动调用
 public void update(Observable obv,Object o)
 {
  ((Rat)obv).showStatus();  
  think="看起来这只老鼠美味十足啊!";
  showStatus();
 }
 
 public static void main(String[] args)
 {
  Rat rat=new Rat();
  rat.showStatus();
  
  Cat cat=new Cat();
  cat.showStatus();
 
  rat.addObserver(cat);//注册观察者
  rat.change();//被观察对象变化
 }
 
 public void showStatus()
 {
  System.out.println("The cat think: "+think);
 }
}先编译Rat.java成功后再编译执行Cat.java,可以看到被观察对象rat.change()后,cat.update()自动激发执行