Java Event机制和观察者模式
新Java 的事件机制是建立在观察者模式基础之上的。在Java 的事件机制的参与者有3种角色:
1、 event object:事件产生时具体的执行事件,一般作为参数,存在listener的方法之中。每个事件都有事件对象与之对应,Java 的事件模式约定每个事件从java.util.EventObject继承。从编程的角度来说是不必须的。
2、 event source:具体的接收事件的实体。比如点击一个button,那么button就是event source,这样必须使button对某些事件进行响应,需要注册特定的listener。一个类要成为事件源不需要不需要派生自任何的类或接口,但事件源需要保持一个事件监听器列表。调用addXXXlistener添加监听器,调用removeXXXlistener删除监听器。这和观察者模式的被观察者Observable基本是统一的。
3、 event listener:具体的对监听的事件类,当有其对应的的event object产生的时候,就调用相应的进行处理。Window程序设计使用callback机制来实现。事件监听器对象是当事件发生时被调用的对象。Java 的事件监听实现了java.util.EventListener接口,这也不是必须的。事件监听和事件对象共同组成了观察者模式的Observer。
接下来用例子分别对事件机制和观察者模式做模拟:
1、观察者类DemoObserver,很简单,只打印一句话”have observable!”:
2、被观察者,对Java 自身被观察者对象的使用
3、event object对象,简单的demoevent,之用一个say()动作
4、event listener接口,抽象出多个listener的共同行为,多态
具体实现1:
5、event source事件的载体,集成一个被观察者,也可以使用这个DemoSource类作为被观察者:
6、最后一条,也就是测试,代码很简单,只要是实例化我们的event实体,然后对实体添加监听器,并执行notifyDemoEvent方法:
结果很简单
总体来说,都术语解藕的编程方式,实现细节本人认为是一致的。只是在tomcat的源码分析过程中偶遇Java 事件机制,故多走一步,同时复习下观察者模式。
分享到:
相关推荐
Java视频教程2 Java的事件处理 JavaEvent
java事件处理机制
一个比较有意思的js库可以为javascript的对象实现观察者模式,以往我们使用javascript实现的观察者模式都是通过使用回调函数配合dom上的event事件来操作的,而“Watch.js”可以为javascript的对象实现观察者模式,...
C++Event机制的简单实现
这是一个观察者模式的简化实现,有助于代码的解耦。 * 你可以预先定义一些事件,事件的定义使用OBSERVER_EVENT宏: * OBSERVER_EVENT( Name, <Params> ) * Name 是事件的名称 * Params 是参数表 * 比如 ...
java事件处理机制ppt 有3种角色: 1.event object:就是事件产生时具体的“事件”,用于listener的相应的方法之中,作为参数,一般存在与listerner的方法之中 2.event source:具体的接受事件的实体,比如说,你...
Java实现一个模型、两个视图和两个控制器的功能软件,即采用MVC模式或者说是观察者模式,本程序通过输入球体半径,显示球体形状,面积体积等 Sphere.java package Model; import java.util.Observable; public class...
java事件监听机制 java中的事件机制的参与者有3种角色: .event object:就是事件产生时具体的“事件”,用于listener的相应的方法之中,作为参数,一般存在与listerner的方法之中
EventService 是“观察者”模式的轻量级实现。 它允许在触发/发布或删除/取消订阅时进行过滤。 可以根据名称、优先级、频道触发或删除事件。 在没有任何依赖的情况下实现。 特征 频道 优先事项 事件选择/过滤 ...
zend-eventmanager, 实现事件系统,信号插槽,拦截过滤器和观察者 zend zend-eventmanager是针对以下用例设计的:实现简单的主题/观察者模式。实现面向方面设计。实现事件驱动架构。基本架构允许你在每个实例基础上...
java.awt.event 提供处理由 AWT 组件所激发的各类事件的接口和类。 java.awt.font 提供与字体相关的类和接口。 java.awt.geom 提供用于在与二维几何形状相关的对象上定义和执行操作的 Java 2D 类。 java.awt.im ...
针对于JAVA事件的总结,包括鼠标事件
通过最简单的GPIO 按键分析代码,详细讲解理清Linux event层机制分析
内容:中介者模式、观察者模式/监听者模式实现,用来消息发送和消息处理的解耦,以单播和多播形式同步或异步的模式发布消息,创建和帧听事件。 能学到:ApplicationContext、ApplicationEvent、ApplicationListener...
剖析Java Event-Delegation Model,讲得很好,有深度!!
生产者/消费者问题的多种Java实现方式。采用适配器模式架构完成三种方式的实现。demo清晰明了
这种机制基于观察者模式,由事件(ApplicationEvent)、事件监听器(ApplicationListener)和事件广播器(ApplicationEventMulticaster)三个主要组成部分构成。 事件是发生的动作或事情,其核心是ApplicationEvent...
event-dispatcher:介体和观察者模式事件库
java.awt.event 提供处理由 AWT 组件所激发的各类事件的接口和类。 java.awt.font 提供与字体相关的类和接口。 java.awt.geom 提供用于在与二维几何形状相关的对象上定义和执行操作的 Java 2D 类。 java.awt.im 提供...
source code deficit round robin in java. use discrete event simulation