观察者设计模式:
//利用房子和购房者来说明观察者设计模式
importjava.util.Observable;
importjava.util.Observer;
public class ObserverDemo {
public static void main(String[]args) {
Home h = new Home();
HomeObserverho1 = new HomeObserver("观察者1");
HomeObserverho2 = new HomeObserver("观察者2");
HomeObserverho3 = new HomeObserver("观察者3");
//添加观察者
h.addObserver(ho1);
h.addObserver(ho2);
h.addObserver(ho3);
h.setPrice(888);
System.out.println(h);
}
}
class Home extends Observable{
private float price;
public void setPrice(float price) {
super.setChanged();//设置变化点 //如果不设置,则不会执行下面一句
super.notifyObservers(price);//通知所有观察者 //调用观察者的update方法
this.price = price;
}
public float getPrice() {
return price;
}
public String toString(){
return "房子价格为:"+price;
}
}
class HomeObserver implements Observer {
private String name;
publicHomeObserver(String name) {
this.name = name;
}
public void update(Observableo, Object arg) {//第一个参数表示被观察者的实例,第二个参数表示修改的内容
System.out.println(this.name+"观察者看到的价格:"+arg);
// System.out.println(((Float)arg).floatValue());
}
}