JDK观察者模式介绍

JDK观察者模式介绍

ID:40199698

大小:63.00 KB

页数:4页

时间:2019-07-25

JDK观察者模式介绍_第1页
JDK观察者模式介绍_第2页
JDK观察者模式介绍_第3页
JDK观察者模式介绍_第4页
资源描述:

《JDK观察者模式介绍》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、java观察者模式介绍概念 Observer模式定义对象间的一对多的依赖关系,当一个对象(被观察者)的状态发生改变时,所有依赖于它的对象(观察者)都得到通知并被自动更新。JDK里提供的observer设计模式的实现由java.util.Observable类和java.util.Observer接口组成。从名字上可以清楚的看出两者在Observer设计模式中分别扮演的角色:Observer是观察者角色,Observable是被观察目标(subject)角色。相关类介绍1.Obervable类此类表示模型视图范例中的observable对象,继承它的类表示应用程序想要观察的对象。一个

2、observable对象可以有一个或多个观察者。观察者是实现Observer接口的任意对象。一个observable实例改变后,调用Observable的notifyObservers方法的应用程序会通过调用观察者的update方法来通知观察者该实例发生了改变。方法摘要voidaddObserver(Observero)如果观察者与集合中已有的观察者不同,则向对象的观察者集中添加此观察者。未指定向多个观察者发送通知的顺序。protectedvoidclearChanged()指示对象不再改变,或者它已对其所有的观察者通知了最近的改变,所以hasChanged方法将返回false。n

3、otifyObservers方法自动调用此方法。intcountObservers()返回Observable对象的观察者数目。voiddeleteObserver(Observero)从对象的观察者集合中删除某个观察者。向此方法传递null无效。voiddeleteObservers()清除观察者列表,使此对象不再有任何观察者。booleanhasChanged()测试对象是否改变。当且仅当在此对象上最近调用了setChanged方法时才返回true;否则返回false。voidnotifyObservers()如果hasChanged方法指示对象已改变,则通知其所有观察者,并调

4、用clearChanged方法来指示此对象不再改变。每个观察者都有其update方法,其调用参数有两个:observable对象和null。换句话说,此方法等效于:notifyObservers(null)voidnotifyObservers(Objectarg)如果hasChanged方法指示对象已改变,则通知其所有观察者,并调用clearChanged方法来指示此对象不再改变。每个观察者都有其update方法,其调用参数有两个:observable对象和arg参数。arg可以是任意对象protectedvoidsetChanged()标记此Observable对象为已改变的对

5、象;现在hasChanged方法将返回true关于发送通知的顺序Observable类中所提供的默认实现将按照其注册的重要性顺序来通知Observers,但是子类可能改变此顺序,从而使用非固定顺序在单独的线程上发送通知,或者也可能保证其子类遵从其所选择的顺序。注意:此通知机制与线程无关,并且与Object类的wait和notify机制完全独立。新创建一个observable对象时,其观察者集是空的。当且仅当equals方法为两个观察者返回true时,才认为它们是相同的。2.Oberver接口这是个接口类,这个接口只有一个为实现的抽象方法update。实现该接口的对象成为观察者,该对

6、象要实现update方法。注册了该对象(观察者)的对象(观察者)实例条用notifiyObservers方法后,观察者会自动执行update方法。方法摘要voidupdate(Observableo,Objectarg)只要改变了observable对象就调用此方法。o-observable对象。arg-notifyObservers方法的参数。实例该实例模拟了烧水的过程,涉及三个对象,Heater(热水器),Display(显示器),Alarm(报警器).模拟过程:为了便于运行,水的初始化温度为90,沸点为95,显示器依据热水器显示温度,显示器显示温度为95时,报警器开始报警。明

7、显可以看出Heater是subject,Display是它的Obsrver,同时Display亦是subject,因为它要被报警器观察,所以Alarm是Display的Observer.Heater.java类publicclassHeaterextendsObservable{privateinttemperature;publicintgetTemperature(){returntemperature;}publicvoidsetTemperature(intt

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。