public void measurementsChanged() {
notifyObservers();
}

public void setMeasurements(float temperature, float humidity, float pressure) {
this.temperature = temperature;
this.humidity = humidity;
this.pressure = pressure;
measurementsChanged();
}
setMeasurements 方法为什么不直接调用notifyObservers();反而要写个方法包装起来调用,这个由什么好处么?

解决方案 »

  1.   

    个人看法:
         可能是为了修给代码方便,你可以在measurementsChanged添加需要的代码,
    而不需要更改setMeasurements,而且这样看起来功能模块更清晰些
      

  2.   

    同意一楼的看法.
    我的看法.这是java的特性吧.呵呵.这样写在性能上在处理某些数据时可能好过直接调用notifyObservers();
      

  3.   

    可能是方便功能扩展的时候无须修改setMeasurements(),比如我在这函数中不光需要notifyObservers()功能,还需要一个
    notifyObclients()的时候,直接在 measurementsChanged() 里加就行了
    个人感觉measurementsChanged()方法可能是用来封装一系列操作的~~不过怎么他要是不想暴露出来的话怎么还用了
    public了捏?呵呵,个人看法~~
      

  4.   

    jiaping108 说的对个人觉得这个类实现了某个接口,这个接口声明了measurementsChanged方法。
      

  5.   

    你这说的应该是
    适配器模式吧我跟你说也说不太清
    给你个网址看看吧,肯定有收获
    http://book.csdn.net/bookfiles/268/10026811896.shtml
      

  6.   

    个人看法:
        这个就是java的代码的可重用性,这样吧代码用一个方法包装一下,其他的方法也可以再调用这个方法,
    这是第一点,另外,如果我们还要再添加代码的话,可以直接在measurementsChanged() 中进行添加,
    而不必改变setMeasurements方法,这也是java 的优点。
      

  7.   

    单从LZ帖的代码看不出来有什么用处
    LZ可以纵观全局的看看代码
    个人感觉作者既然这么写 一定会有他的用意
    应该不会是一段费代码 毕竟能写设计模式的人
    应该不会是才入门到新手。
      

  8.   

    需不需要多写一个measurementsChanged()方法并不一定有绝对的答案,看各人理解了。我就自己的看法写几点:
    1。函数名最好与其对应的功能对应,通知和改变并不是一回事。
    2。有利于功能分离,notifyObservers() 这个方法目的是通知监听者,从这个意义上看,它可能只是改变事件的一部分功能。自然,其它的改变事件也可以调用这个notifyObservers() 。
    3。增加了程序的可维护性,其中起一方的修改不会影响另外一方。不过,话说回来,如果只是上面的几行代码,大可不必如此复杂,杀鸡焉用牛刀。