行为模式之-观察者模式

来源:互联网 发布:mac玩倩女幽魂手游 编辑:程序博客网 时间:2024/06/05 17:11
/** * 观察者模型实例 *  */import java.util.Observable;import java.util.Observer;public class ViewerDemo {public static void main(String[] args) {// TODO Auto-generated method stubHouse h=new House(10000);HousePriceObserver hpo1=new HousePriceObserver("购房者A");HousePriceObserver hpo2=new HousePriceObserver("购房者B");HousePriceObserver hpo3=new HousePriceObserver("购房者C");h.addObserver(hpo1);h.addObserver(hpo2);h.addObserver(hpo3);System.out.println(h);h.setPrice(666666);System.out.println(h);}}/** * 创建被观察者类,继承Observable类,在实体的set方法中一般继承父类的setChanged(),super.notifyObservers(Object obj) */class House extends Observable {private float price;public House(float price){this.price=price;}/** * @return the price */public float getPrice() {return price;}/** * @param price the price to set */public void setPrice(float price) {super.setChanged();super.notifyObservers(price);this.price = price;}public String toString(){return "房子的价格为:" +this.price;}}/* * 创建观察者类,其实Observer接口,Observer接口就一个方法update(),重写时一般判断一下参数类型是否正确。 */class HousePriceObserver implements Observer {private String name;public HousePriceObserver(String name){this.name=name;}public void update(Observable obj, Object arg) {if(arg instanceof Float){System.out.print(this.name+"观察到的价格为:");System.out.println(((Float)arg).floatValue());}}}