观察者模式
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); }