首页 > 学院 > 开发设计 > 正文

Java常用类库--观察者设计模式( Observable类Observer接口)

2019-11-14 23:07:29
字体:
来源:转载
供稿:网友
java常用类库--观察者设计模式( Observable类Observer接口)

原文链接:http://www.2cto.com/kf/201310/253013.html

如果要想实现观察者模式,则必须依靠java.util包中提供的Observable类和Observer接口。

123456789101112131415161718192021222324252627282930313233343536373839404142434445import java.util.* ; class House extends Observable{ // 表示房子可以被观察 PRivate float price ;// 价钱 public House(float price){ this.price = price ; } public float getPrice(){ return this.price ; } public void setPrice(float price){ // 每一次修改的时候都应该引起观察者的注意 super.setChanged() ; // 设置变化点 super.notifyObservers(price) ;// 价格被改变 this.price = price ; } public String toString(){ return "房子价格为:" + this.price ; } }; class HousePriceObserver implements Observer{ private String name ; public HousePriceObserver(String name){ // 设置每一个购房者的名字 this.name = name ; } public void update(Observable o,Object arg){ if(arg instanceof Float){ System.out.print(this.name + "观察到价格更改为:") ; System.out.println(((Float)arg).floatValue()) ; } } }; public class ObserDemo01{ public static void main(String args[]){ House h = new House(1000000) ; 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) ; // 输出房子价格 } };

运行结果:房子价格为:1000000.0购房者C观察到价格更改为:666666.0购房者B观察到价格更改为:666666.0购房者A观察到价格更改为:666666.0房子价格为:666666.0
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表