import java.util.* ;
class House extends Observable
{ private float price ;
  public House(float price)
  { this.price = price ;
   }
 
  public void setPrice(float price)
  {
    this.price = price ;
    super.setChanged();
    super.notifyObservers(price) ;
  }
 }
class HousePriceObserver implements Observer
 { private String name ;
   public HousePriceObserver(String name)
   { this.name = name ;
    }
   public void update(Observable o,Object arg)
   {  if(arg instanceof Float)
       {
 System.out.println(this.name +"观察到价格更改为:") ;
          System.out.println(((Float)arg).floatValue()) ;
        }
    }
  }public class ObserDemo01
{ public static void main(String args[])
  { House h = new House(1000000) ;
    HousePriceObserver hpo1 = new HousePriceObserver("购房者A") ;
    HousePriceObserver hpo2 = new HousePriceObserver("购房者B") ;
    HousePriceObserver hpo3= new HousePriceObserver("购房者C") ;
    h.addObserver(hpo1) ;
    h.addObserver(hpo2) ;
    h.addObserver(hpo3) ;
    h.setPrice(666666) ;
  }
}
上面的程序是一个观察者模式的实现形式,House是观察对象,HousePriceObserver是观察者,这儿运行
输出的结果是:
      购房者C观察到价格更改为:
      666666.0
      购房者B观察到价格更改为:
      666666.0
      购房者A观察到价格更改为:
      666666.0
这儿是C先被通知,但是查看java源码时,观察者 hpo1 hpo2 hpo3按顺序加入到Vector向量中,通知
更新即调用update(Observable o,Object arg)方法时,也是按顺序取向量中的观察者对象,然后观察
者对象调用update()方法,应该先是购房者A观察到价格更改,这儿怎么是C先??