日期:2014-05-20  浏览次数:20681 次

在Java中使用观察者模式时,Observable的方法notifyObservers(Object arg)的问题
在Java中使用观察者模式时,Observable的方法notifyObservers(Object arg)
中的arg参数有什么作用?
JDK文档中好象什么也没说

------解决方案--------------------
Observable中有两个重载的方法,一个是不带参数的notifyObservers(),一个是带参数的notifyObservers(Object arg)
先说那个带参数的notifyObservers(Object arg):
这个参数Object arg 其实就是 Observer接口中的update(Observable o, Object arg)方法中的第二个参数 
其实就是一个数据对象,也就是通知观察者,改变的数据对象是什么
这就是一种PUSH的方法,由主题主动的PUSH需要改变的数据对象给观察者
例子:
Java code

public class WeatherData extends Observable {
         private float temperature;    
private float humidity;
private float pressure;

……..
public void measurementsChanged() {
        setChanged();
        notifyObservers(float temperature);
    }}