观察者设计模式类似于一种数据监听的操作,即当某些数据发生变化后,可以立刻引起响应。在Java中提供有专门的观察者实现类,本节将为读者介绍如何利用这些支持类实现观察者模式。
11.15.1什么叫观察者
11.15.2观察者模式实现
【例11.45】观察者模式的实现
package jiaqi;
import java.util.Observable;
import java.util.Observer;
class House extends Observable
{
private float price = 0 ;
public House(int price)
{
this.setPrice(price);
}
public void setPrice(float price)
{
this.price = price;
//关键
super.setChanged();
//记得设置参数
super.notifyObservers(price);
}
public float getPrice()
{
return price;
}
public String toString()
{
return "房子价格:" + this.price;
}
}
class HouseObser implements Observer
{
private String name ;
public HouseObser(String name)
{
this.name = name ;
}
@Override
public void update(Observable o, Object arg)
{
if(arg instanceof Float)
{
System.out.println(this.name+"观察者看到波动价格:"+((Float)arg).floatValue());
}
}
}
public class demo357_1
{
public static void main(String[] args)
{
//被观察者
House h = new House(100);
//观察者
HouseObser obser1 = new HouseObser("AAA");
HouseObser obser2 = new HouseObser("BBB");
HouseObser obser3 = new HouseObser("CCC");
//加入观察者
h.addObserver(obser1);
h.addObserver(obser2);
h.addObserver(obser3);
//之前
System.out.println(h);
//改动价格
h.setPrice(666);
//之后
System.out.println(h);
}
}
代码关键: