Java观察者设计模式
在java.util包中提供了Observable类和Observer接口,使用它们即可完成观察者模式。

多个观察者都在关注着价格的变化,只要价格一有变化,则所有的观察者会立即有所行动。
import java.util.Observable;
import java.util.Observer;
class House extends Observable{
private float price;
public House(float price) {
super();
this.price = price;
}
public float getPrice() {
return price;
}
public void setPrice(float price) {
super.setChanged(); //设置变化点
super.notifyObservers(price); //通知所有观察者价格改变
this.price = price;
}
@Override
public String toString() {
return "房子价格为:" + this.price;
}
}
class HouseObserver implements Observer{
private String name; //观察者的名字
public HouseObserver(String name) {
super();
this.name = name;
}
@Override
public void update(Observable o, Object arg) {
// TODO 自动生成的方法存根
if(arg instanceof Float){ //判断参数类型
System.out.println(this.name+"观察到价格改变为");
System.out.println(((Float)arg).floatValue());
}
}
}
public class Observer_demo {
public static void main(String[] args) {
// TODO 自动生成的方法存根
House h = new House(1000000);
HouseObserver ho1 = new HouseObserver("购房者1");
HouseObserver ho2 = new HouseObserver("购房者2");
HouseObserver ho3 = new HouseObserver("购房者3");
h.addObserver(ho1); //加入观察者
h.addObserver(ho2);
h.addObserver(ho3);
System.out.println(h); //输出房子的价格
h.setPrice(666); //修改房子的价格
System.out.println(h); //输出房子的价格
}
}
本文只发表于博客园和tonglin0325的博客,作者:tonglin0325,转载请注明原文链接:https://www.cnblogs.com/tonglin0325/p/5270965.html

浙公网安备 33010602011771号