热点:

    Java观察者模式详解

      [   原创  ]   作者:
    收藏文章 暂无评论

    在Java中,观察者模式用于建立对象之间一对多的依赖关系。当某个对象(即被观察者)的状态发生变化时,所有依赖它的对象(即观察者)都会收到通知,并自动进行相应更新。JDK为该模式提供了基础支持,主要由两个组件构成:java.util.Observer接口和java.util.Observable类。前者用于定义观察者的更新行为,后者则代表可被监控的对象,通过两者的协作实现松耦合的对象间通信,适用于事件处理、数据同步等场景。

    1、 Observable类供被观察者继承,支持一个或多个观察者的订阅。当调用setChanged方法后,hasChanged方法将返回true,表示对象状态已改变。此时若调用notifyObservers方法,便会触发所有观察者的update方法,通知它们被观察对象已发生变动,从而实现状态的自动通知与同步更新。

    2、 Observer接口仅包含一个未实现的抽象方法update,实现了该接口的对象被称为观察者,需自行实现update方法。当某个对象(被观察者)注册了该观察者后,在调用notifyObservers方法时,系统会自动触发所有已注册观察者的update方法,从而实现状态变更的通知与响应,形成观察者与被观察者之间的联动机制。

    3、 被观察者I114gBoxHeaterObservable.java用于表示热水器,继承自Observable类,其具体实现方式如下所示。

    4、 /**

    5、 热水器作为被监控的对象

    6、 *

    7、 *

    8、 */

    9、 水温

    10、 }

    11、 }

    12、 加热水至沸腾

    13、 从水温15度开始,循环检测温度是否在10到100度之间,持续进行升温处理。

    14、 调用setChanged()后,hasChanged()方法会返回true。

    15、 当被观察对象的状态发生改变时,其注册的监听者会收到通知并执行相应的更新操作。

    16、 }

    17、 }

    18、 }

    19、 该类名为I114gBoxDisplayObservable.java,兼具观察者与被观察者的双重角色,用于表示显示器。它继承自Observable类,并实现了Observer接口,通过这种设计实现状态的监听与更新,具体实现方式如下所示。

    20、 /**

    21、 显示器作为观察者监视热水器,同时作为被观察者接受报警器的监控。

    22、 *

    23、 *

    24、 */

    25、 }

    26、 }

    27、 显示当前水温

    28、 水烧开时

    29、 }

    30、 记录日志:当前水的状态为+状态+,水温为+温度+度。

    31、 }

    32、 当被观察对象状态变化时,触发此方法执行。

    33、 }

    34、 }

    35、 观察者I114gBoxAlarmObserver.java 是一个报警器类,实现了Observer接口,用于监听和响应特定事件,具体实现方式如下所示。

    36、 /**

    37、 报警器即为观察者

    38、 *

    39、 *

    40、 */

    41、 水开时调用此方法

    42、 }

    43、 警报触发

    44、 水已烧开,滴滴提示音响起,提醒及时关火。

    45、 }

    46、 }

    47、 Test.java为观察者模式的测试类,具体实现代码如下所示。

    48、 /**

    49、 观察者模式测试代码示例

    50、 *

    51、 *

    52、 */

    53、 添加观察者

    54、 显示器用于观察热水器运行状态。

    55、 报警器用于监控显示器状态

    56、 煮水

    57、 }

    58、 }

    59、 执行测试类,输出结果如下

    soft.zol.com.cn true https://soft.zol.com.cn/1167/11676235.html report 2350 在Java中,观察者模式用于建立对象之间一对多的依赖关系。当某个对象(即被观察者)的状态发生变化时,所有依赖它的对象(即观察者)都会收到通知,并自动进行相应更新。JDK为该模式提供了基础支持,主要由两个组件构成:java.util.Observer接口和java.util.Observable类...
    不喜欢(0) 点个赞(0)
    随时随地资讯查报价 就上ZOL手机客户端,点击或扫描二维码下载
    立即下载

    Temperature Throttle

    更新时间:2011年11月18日

    用户评分:0 | 0人点评

    软件类型:免费软件

    软件语言:英文

    Temperature Throttle
    • 更新时间:2011年11月18日
    • 软件大小:6.4MB
    • 软件分类:优化软件
    • 语言种类:英文
    • 软件评级:0 人点评