java观察者模式
来源:互联网 发布:淘宝给差评被砍死 编辑:程序博客网 时间:2024/06/03 21:13
简单地说,观察者模式定义了一个一对多的依赖关系,让一个或多个观察者对象监察一个主题对象。这样一个主题对象在状态上的变化能够通知所有的依赖于此对象的那些观察者对象,使这些观察者对象能够自动更新。
不多说了,直接给出实现:
例1:
/** * 对某个事件只有一个订阅者的例子 * @author yongxing.shao * */public class OneObserverExample {public static void main(String[] args) {IObserver observer = new Observer();EventNotifier notifier = new EventNotifier(observer);notifier.doWork();}}//对某事件感兴趣的观察者接口interface IObserver {public void processInterestedEvent();}/** * 当一事件发生时,需要通知实现IObserver接口的对象,并调用interesingEvent()方法 * @author yongxing.shao * */class EventNotifier {private IObserver observer; //观察者private boolean somethingHappened; //标志事件是否发生public EventNotifier(IObserver observer) {this.observer = observer;this.somethingHappened = false;}public void doWork() {somethingHappened = true;if (somethingHappened) {//事件发生时,通过调用接口的这个方法来通知observer.processInterestedEvent();}}}/** * 观察者实现 * @author yongxing.shao * */class Observer implements IObserver {private EventNotifier en;public Observer() {//新建一个事件通知者对象,并把自己传递给它this.en = new EventNotifier(this);}//实现事件发生时,实际处理事件的方法public void processInterestedEvent() {System.out.println("Observer: event happened");}}
例2:
/** * 对某个事件存在多个订阅者 * @author yongxing.shao * */public class ManyObserverExample {public static void main(String[] args) {EventNotifier notifier = new EventNotifier();IObserver observerA = new Observer("Observer A");IObserver observerB = new Observer("Observer B");//registnotifier.regist(observerA);notifier.regist(observerB);notifier.doWork();}}/** * 对某事件感兴趣的观察者接口 * @author yongxing.shao * */interface IObserver {public void processInterestedEvent(String event);}class Observer implements IObserver {private String name;public Observer(String name) {this.name = name;}//实现事件发生时,实际处理事件的方法public void processInterestedEvent(String event) {System.out.println(name + ": [" + event + "] happened.");}}/** * 当一事件发生时,需要通知实现IObserver接口的对象,并调用interesingEvent()方法 * @author yongxing.shao * */class EventNotifier {private List<IObserver> observers = new ArrayList<IObserver>(); //观察者public void regist(IObserver observer) {observers.add(observer);}public void doWork() {for (IObserver observer : observers) {observer.processInterestedEvent("sample event");}}}
0 0
- java观察者模式
- java观察者模式
- Java 观察者模式
- Java实现观察者模式
- Java实现观察者模式
- Java 中的观察者模式
- Java观察者模式
- java Observer 观察者模式
- 观察者模式(Java)
- java 接口 观察者模式
- java观察者模式
- Java之观察者模式
- Java 观察者模式
- java 观察者模式
- java中的观察者模式
- java 观察者模式
- java观察者模式介绍
- java观察者模式
- HashMap Hashtable区别
- 归并排序详解_legend
- Firefox 3.6.28 Download
- libgdx 第二节 主菜单界面
- 淘宝实时数据传输平台: TimeTunnel介绍
- java观察者模式
- JQUERY获取当前页面的URL信息
- cocos2dx对精灵的优化
- POJ1050
- Maximum GCD - UVa 11827 最大公约数 读入有坑
- Cocos Code IDE 不能代码提示
- 关于main()内变量,局部变量与全局变量
- Subclipse使用说明
- 黑马程序员--集合工具类