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