Java中的观察者模式
2015-10-30 21:23
375 查看
Observer接口
这个接口定义了一个update()方法,当被观察者对象的状态发生变化时,这个方法就会被调用。这个方法的实现类应当调用每一个被观察者对象的notifyObservers()方法,从而通知所有的观察对象。Observable类
被观察者类都是java.util.Observable类的子类。这个类主要提供下面几个方法:
setChanged() - 被调用之后会设置一个内部标记变量,代表被观察者对象的状态发生了变化。
notifyObservers() - 被调用时,会调用所有登记过的观察者对象的update()方法,使这些观察者对象可以更新自己。
addObserver() - 添加观察者对象。
例子
事件被观察者
import java.util.Observable; public class EventObservable extends Observable { private String name = null; public EventObservable(String name) { this.name = name; } public void doSomeChanges() { this.setChanged(); this.notifyObservers(System.currentTimeMillis()); } @Override public String toString() { return this.name; } }
事件观察者
import java.util.Observable; import java.util.Observer; public class EventObserver implements Observer { private String name = null; public EventObserver(String name) { this.name = name; } @Override public void update(Observable o, Object arg) { EventObservable eventObservable = (EventObservable) o; System.out.printf("%s, %s, %s \n", this.name, eventObservable, arg); } @Override public String toString() { return this.name; } }
测试
public class Test { public static void main(String[] args) throws Exception { EventObservable eventObservable = new EventObservable("My Event Observer"); eventObservable.addObserver(new EventObserver("Event Observer 1")); eventObservable.addObserver(new EventObserver("Event Observer 2")); eventObservable.doSomeChanges(); eventObservable.doSomeChanges(); eventObservable.doSomeChanges(); } }
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树
- [原创]java局域网聊天系统