观察者模式

java.util提供了Observable和Observer 接口,使用它们即可完成观察者模式。需要被观察的类必须继承Observable类,Observable类的常用方法:

public void addObserver(Observer o)
public void deleteObserver(Observer o)
protected void setChanged()     被观察者状态发生改变(设置变化点)
public void notifyObserver(Object arg)     通知所有观察者状态发生改变
 
每个观察者类都需要实现Observer接口
public interface Observer {
     void update(Obervable o, Object arg);
}

  

此接口只定义了一个update方法,第1个参数表示被观察者实例,第二个参数表示修改的内容。
 
class House extends Observable {
     public void setPrice(float price){
          super.setChanged();     //     设置变化点
          super.notifyObservers(price);     //通知所有观察者价格变化     
          this.price = price;
     }
}
 
class HouseObserver implements Observer {
     public void update (Observable obj, Object arg){
          if(arg instanceof Float) {
          System.out.println("价格变为" + ((Float) arg).floatValue());
          }
     }
}
 
public static void main(String args[]){
     House h = new House(10000);
     HousePriceObserver hp1 = new HousePriceObserver("购房者A");
     h.addObserver(hp1);
     h.setPrice(66666);
}

  

原文地址:https://www.cnblogs.com/mywy/p/5230972.html