Observer与Observable关系
来源:互联网 发布:js 数组里的对象去重 编辑:程序博客网 时间:2024/04/29 18:43
以下纯粹为自己的理解:
Observer观察者;
Observable 被观察者;
1.根据文档,Observable有一个管理者的集合,在数据发生改变时,可以通知所有观察者对象;
2.在构建观察者时,需要加入到被观察者的集合中,被观察者发现在数据改变时,调用setChanged(),标记位,notifyObservers()执行,并可以传递数据;
3.在Observer中,回调update(),得到数据根据需要执行下一步;
4.在Observer对象销毁前一定要用deleteObserver将其从列表中删除,不然因为还存在对象引用的关系,Observer对象不会被垃圾收集,造成内存泄漏,并且已死的Observer仍会被通知到,有可能造成意料外的错误,而且随着列表越来越大,notifyObservers操作也会越来越慢。
附上Observable方法:
addObserver
public void addObserver(Observer o)
- 如果观察者与集合中已有的观察者不同,则向对象的观察者集中添加此观察者。未指定向多个观察者发送通知的顺序。请参阅该类的注释。
- 参数:
o
- 要添加的观察者。- 抛出:
NullPointerException
- 如果参数 o 为 null。
deleteObserver
public void deleteObserver(Observer o)
- 从对象的观察者集合中删除某个观察者。向此方法传递
null
将使其无效。 - 参数:
o
- 要删除的观察者。
notifyObservers
public void notifyObservers()
- 如果
hasChanged
方法指示对象已改变,则通知其所有观察者,并调用clearChanged
方法来指示此对象不再改变。每个观察者都有其
update
方法,其调用参数有两个:observable 对象和null
。换句话说,此方法等效于:notifyObservers(null)
- 另请参见:
clearChanged()
,hasChanged()
,Observer.update(java.util.Observable, java.lang.Object)
notifyObservers
public void notifyObservers(Object arg)
- 如果
hasChanged
方法指示对象已改变,则通知其所有观察者,并调用clearChanged
方法来指示此对象不再改变。每个观察者都有其
update
方法,其调用参数有两个:observable 对象和arg
参数。 - 参数:
arg
- 任意对象。- 另请参见:
clearChanged()
,hasChanged()
,Observer.update(java.util.Observable, java.lang.Object)
deleteObservers
public void deleteObservers()
- 清除观察者列表,使此对象不再有任何观察者。
setChanged
protected void setChanged()
- 标记此 Observable 对象为已改变的对象;现在 hasChanged 方法将返回 true。
clearChanged
protected void clearChanged()
- 指示对象不再改变,或者它已对其所有的观察者通知了最近的改变,所以 hasChanged 方法将返回 false。
notifyObservers
方法自动调用此方法。 - 另请参见:
notifyObservers()
,notifyObservers(java.lang.Object)
hasChanged
public boolean hasChanged()
- 测试对象是否改变。
- 返回:
- 当且仅当在此对象上最近调用了
setChanged
方法,而不是clearChanged
方法时,才返回true
;否则返回false
。 - 另请参见:
clearChanged()
,setChanged()
countObservers
public int countObservers()
- 返回 Observable 对象的观察者数目。
- 返回:
- 对象的观察者数目。
0 0
- Observer与Observable关系
- Observable与Observer
- Observable与Observer
- Observable与Observer
- Observable与Observer
- Observer与Observable
- Observer与Observable
- Observer与Observable
- Observer与Observable
- Observable与Observer
- 体会 Observable与Observer 模式
- Observable与Observer (观察者模式)
- Observable & Observer
- Java基础之Observable与Observer接口观察者模式
- 设计模式之观察者模式(Observable与Observer)
- 设计模式之观察者模式(Observable与Observer)
- [置顶] Java Observer与Observable实现观察者模式
- 设计模式之观察者模式(Observable与Observer)
- myeclipse不编译解决方法
- Java Threads 多线程10分钟参考手册
- caffe中的BLAS
- 二叉树
- 建立同学通讯录
- Observer与Observable关系
- SGU495 Kids and Prizes 概率DP,期望公式
- Java NIO原理 图文分析及代码实现
- 指向结构类型变量的指针
- 2.Cocos2dx 3.2中的重力系统Box2D
- Java多线程编程总结
- Science发表的超赞聚类算法
- Determine whether an integer is a palindrome. Do this without extra space.
- 数据结构——判断链表是否有环