Java中观察者模式的使用

发表于:2011-5-03 09:26

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:zhanghong    来源:51Testing软件测试网采编

  StokeQuote.java

  Java代码

  • public class StockQuotes     
  •     {     
  •     public static void main(String[] args)     
  •         {     
  •         System.out.println();     
  •         System.out.println("-- Stock Quote Application --");     
  •         System.out.println();     
  •     
  •         StockData stockData = new StockData();     
  •     
  •         // register observers...     
  •         new TradingFool(stockData);     
  •         new BigBuyer(stockData);     
  •     
  •         // generate changes to stock data...     
  •         stockData.setStockData("JUPM",16.10f,16.15f,15.34f,(long)481172);     
  •         stockData.setStockData("SUNW",4.84f,4.90f,4.79f,(long)68870233);     
  •         stockData.setStockData("MSFT",23.17f,23.37f,23.05f,(long)75091400);     
  •         }     
  •     }
  •   在测试类中我们可以看到俩个Observer对象都注册了Observable对象,而当Observable对象发生改变时,这俩个Observable对象就会做相应的更新了,运行结果如下:

      Java代码

  • Big Buyer reports...      
  •     The lastest stock quote for JUPM is:     
  •     $16.10 per share (close).     
  •     $16.15 per share (high).     
  •     $15.34 per share (low).     
  •     481,172 shares traded.     
  •     
  • Trading Fool says...      
  •     JUPM is currently trading at $16.10 per share.     
  •     
  • Big Buyer reports...      
  •     The lastest stock quote for SUNW is:     
  •     $4.84 per share (close).     
  •     $4.90 per share (high).     
  •     $4.79 per share (low).     
  •     68,870,233 shares traded.     
  •     
  • Trading Fool says...      
  •     SUNW is currently trading at $4.84 per share.     
  •     
  • Big Buyer reports...      
  •     The lastest stock quote for MSFT is:     
  •     $23.17 per share (close).     
  •     $23.37 per share (high).     
  •     $23.05 per share (low).     
  •     75,091,400 shares traded.     
  •     
  • Trading Fool says...      
  •     MSFT is currently trading at $23.17 per share.
  •   我们通过Observable源码可以看到,其实Observable对象不关心具体的Observer的实例类型。 只要是实现了Observer接口的Observer对象都可以得到通知,这就为我们如果想要对模型进行扩展提供了方便,使Observable对象和Observer对象实现了松耦合。 如果我们需要添加一个新的Observer对象时,我们只要注册一下,当Observable对象发生变化时就可以得到通知,而不要做其他任何改变,非常方便。

    33/3<123
    《2023软件测试行业现状调查报告》独家发布~

    关注51Testing

    联系我们

    快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

    法律顾问:上海兰迪律师事务所 项棋律师
    版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
    投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

    沪ICP备05003035号

    沪公网安备 31010102002173号