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();
new TradingFool(stockData);
new BigBuyer(stockData);
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对象发生变化时就可以得到通知,而不要做其他任何改变,非常方便。