设计模式-观察者模式的JDK实现
今天在翻查JAVA API的时候发现了特别的类java.util.Observable和接口
java.util.Observer,细看发现原来是java类库实现观察着(Observer)模式的类和接口。
观察者模式定义:
观察者(Observer)模式又名发布-订阅(Publish/Subscribe)模式。GOF给观察者模式如下定义:定义对象Observer间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
Observable和Observer的说明:
继承于Observable的子类表示被观察的对象,实现了接口Observer的类表示观察者.在下面的例子中继承于Observable的子类NewsDispatcher(新闻派发器)表示被观察的对象,在有新的新闻的时候会把新闻内容派发给所有的订阅者(Reader),Reader是实现了Observer接口的类表示读者。
Observable的简单功能介绍:
addObserver(Observer o) 添加观察着
clearChanged() 清除变化,则把“变化标志”设为false
countObservers() 统计观察着数量
deleteObserver(Observer o) 删除观察者
deleteObservers() 删除所有的观察者
hasChanged() 测试是否有变化(则返回“变化标志”)
notifyObservers() 如果hasChanged()=ture,通知所有的观察着(则调用Observer.update()方法)
notifyObservers(Object arg) 如果hasChanged()=ture,通知所有的观察着(则调用Observer.update()方法),并把参数arg传过去
setChanged() 设置变化,则把“变化标志”设为true
Observable的简单功能介绍
update(Observable o, Object arg) Observable唯一的方法,在被通知时被Observable调用
例子代码:
r2 : 中国队突破了历史,获得了世界杯冠军!r1 : 中国队突破了历史,获得了世界杯冠军!r3 : ibm 收购 sun公司,java开始收费!