博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
观察者设计模式( Observable类Observer接口)
阅读量:5738 次
发布时间:2019-06-18

本文共 1595 字,大约阅读时间需要 5 分钟。

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

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

 

转载地址:http://oeyzx.baihongyu.com/

你可能感兴趣的文章
C#新功能--命名参数与可选参数
查看>>
strtok和strtok_r
查看>>
维辰超市:借助云商城成功转型新零售
查看>>
web.xml中<load-on-start>n</load-on-satrt>作用
查看>>
【算法】CRF
查看>>
windows 8 微软拼音输入法
查看>>
Windows UI风格的设计(7)
查看>>
SQL中使用WITH AS提高性能 使用公用表表达式(CTE)简化嵌套SQL
查看>>
oracle 强行杀掉一个用户连接
查看>>
Git提交本地库代码到远程服务器的操作
查看>>
mysql中主外键关系
查看>>
我的友情链接
查看>>
让你快速上手的Glide4.x教程
查看>>
浮动和清除(闭合)浮动
查看>>
微信小程序注册流程
查看>>
LR录制脚本时IE打不开的原因
查看>>
微博自动化测试
查看>>
Sublime Text 2.0.2,Build 2221注册码
查看>>
js scroll事件
查看>>
最长递增子序列 动态规划
查看>>