• 对象间的联动—观察者模式(四)


    22.4 JDK对观察者模式的支持

          观察者模式在Java语言中的地位非常重要。在JDKjava.util包中,提供了Observable类以及Observer接口,它们构成了JDK对观察者模式的支持。如图22-5所示:

    22-5 JDK提供的Observable类及Observer接口结构图

          (1)  Observer接口

         java.util.Observer接口中只声明一个方法,它充当抽象观察者,其方法声明代码如下所示:

    void  update(Observable o, Object arg);

          当观察目标的状态发生变化时,该方法将会被调用,在Observer的子类中将实现update()方法,即具体观察者可以根据需要具有不同的更新行为。当调用观察目标类ObservablenotifyObservers()方法时,将执行观察者类中的update()方法。

          (2)  Observable

          java.util.Observable类充当观察目标类,在Observable中定义了一个向量Vector来存储观察者对象,它所包含的方法及说明见表22-1

    22-1 Observable类所包含方法及说明

    方法名

    方法描述

    Observable()

    构造方法,实例化Vector向量。

    addObserver(Observer  o)

    用于注册新的观察者对象到向量中。

    deleteObserver  (Observer o)

    用于删除向量中的某一个观察者对象。

    notifyObservers()notifyObservers(Object arg)

    通知方法,用于在方法内部循环调用向量中每一个观察者的update()方法。

    deleteObservers()

    用于清空向量,即删除向量中所有观察者对象。

    setChanged()

    该方法被调用后会设置一个boolean类型的内部标记变量changed的值为true,表示观察目标对象的状态发生了变化。

    clearChanged()

    用于将changed变量的值设为false,表示对象状态不再发生改变或者已经通知了所有的观察者对象,调用了它们的update()方法。

    hasChanged()

    用于测试对象状态是否改变。

    countObservers()

    用于返回向量中观察者的数量。

          我们可以直接使用Observer接口和Observable类来作为观察者模式的抽象层,再自定义具体观察者类和具体观察目标类,通过使用JDK中的Observer接口和Observable类,可以更加方便地在Java语言中应用观察者模式。

    【作者:刘伟   http://blog.csdn.net/lovelion


  • 相关阅读:
    MySQL学习之——锁(行锁、表锁、页锁、乐观锁、悲观锁等)
    PhpExcel导出excel报错:net::ERR_INVALID_RESPONSE
    Java收藏
    Java项目收藏
    CentOS 6.8 安装 Erlang 及 RabbitMQ Server
    Redis 中 5 种数据结构的使用场景介绍
    Golang 实现 set 集合,变相实现 切片去重、排序 功能
    查看 Mac/Linux 某端口占用情况
    [Beego模型] 六、事务处理
    [Beego模型] 五、构造查询
  • 原文地址:https://www.cnblogs.com/luckForever/p/7254732.html
Copyright © 2020-2023  润新知