`
smurfs
  • 浏览: 19733 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java event机制和观察者模式

    博客分类:
  • Java
 
阅读更多

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 自身被观察者对象的使用

3event object对象,简单的demoevent,之用一个say()动作

4event listener接口,抽象出多个listener的共同行为,多态

具体实现1

5event source事件的载体,集成一个被观察者,也可以使用这个DemoSource类作为被观察者:

6、最后一条,也就是测试,代码很简单,只要是实例化我们的event实体,然后对实体添加监听器,并执行notifyDemoEvent方法:

结果很简单

总体来说,都术语解藕的编程方式,实现细节本人认为是一致的。只是在tomcat的源码分析过程中偶遇Java 事件机制,故多走一步,同时复习下观察者模式。

分享到:
评论

相关推荐

    Java视频教程2—JavaEvent

    Java视频教程2 Java的事件处理 JavaEvent

    java事件处理机制

    java事件处理机制

    javascript观察者模式Watch.JS.zip

    一个比较有意思的js库可以为javascript的对象实现观察者模式,以往我们使用javascript实现的观察者模式都是通过使用回调函数配合dom上的event事件来操作的,而“Watch.js”可以为javascript的对象实现观察者模式,...

    C++Event机制的简单实现

    C++Event机制的简单实现

    观察者模式的boost及宏实现

    这是一个观察者模式的简化实现,有助于代码的解耦。 * 你可以预先定义一些事件,事件的定义使用OBSERVER_EVENT宏: * OBSERVER_EVENT( Name, <Params> ) * Name 是事件的名称 * Params 是参数表 * 比如 ...

    java事件处理机制ppt

    java事件处理机制ppt 有3种角色: 1.event object:就是事件产生时具体的“事件”,用于listener的相应的方法之中,作为参数,一般存在与listerner的方法之中 2.event source:具体的接受事件的实体,比如说,你...

    Java实现MVC球体

    Java实现一个模型、两个视图和两个控制器的功能软件,即采用MVC模式或者说是观察者模式,本程序通过输入球体半径,显示球体形状,面积体积等 Sphere.java package Model; import java.util.Observable; public class...

    java事件监听机制.doc

    java事件监听机制 java中的事件机制的参与者有3种角色: .event object:就是事件产生时具体的“事件”,用于listener的相应的方法之中,作为参数,一般存在与listerner的方法之中

    EventService:观察者模式的轻量级实现+高级特性

    EventService 是“观察者”模式的轻量级实现。 它允许在触发/发布或删除/取消订阅时进行过滤。 可以根据名称、优先级、频道触发或删除事件。 在没有任何依赖的情况下实现。 特征 频道 优先事项 事件选择/过滤 ...

    zend-eventmanager, 实现事件系统,信号插槽,拦截过滤器和观察者.zip

    zend-eventmanager, 实现事件系统,信号插槽,拦截过滤器和观察者 zend zend-eventmanager是针对以下用例设计的:实现简单的主题/观察者模式。实现面向方面设计。实现事件驱动架构。基本架构允许你在每个实例基础上...

    JAVA_API1.6文档(中文)

    java.awt.event 提供处理由 AWT 组件所激发的各类事件的接口和类。 java.awt.font 提供与字体相关的类和接口。 java.awt.geom 提供用于在与二维几何形状相关的对象上定义和执行操作的 Java 2D 类。 java.awt.im ...

    JAVA_event.rar_event_java event_鼠标事件

    针对于JAVA事件的总结,包括鼠标事件

    Linux event层机制

    通过最简单的GPIO 按键分析代码,详细讲解理清Linux event层机制分析

    Java中介者模式实现类库组件Java版MediatR

    内容:中介者模式、观察者模式/监听者模式实现,用来消息发送和消息处理的解耦,以单播和多播形式同步或异步的模式发布消息,创建和帧听事件。 能学到:ApplicationContext、ApplicationEvent、ApplicationListener...

    剖析Java Event-Delegation Model

    剖析Java Event-Delegation Model,讲得很好,有深度!!

    java生产者消费者demo

    生产者/消费者问题的多种Java实现方式。采用适配器模式架构完成三种方式的实现。demo清晰明了

    深入探索Spring事件监听机制:技术与应用

    这种机制基于观察者模式,由事件(ApplicationEvent)、事件监听器(ApplicationListener)和事件广播器(ApplicationEventMulticaster)三个主要组成部分构成。 事件是发生的动作或事情,其核心是ApplicationEvent...

    event-dispatcher:介体和观察者模式事件库

    event-dispatcher:介体和观察者模式事件库

    Java 1.6 API 中文 New

    java.awt.event 提供处理由 AWT 组件所激发的各类事件的接口和类。 java.awt.font 提供与字体相关的类和接口。 java.awt.geom 提供用于在与二维几何形状相关的对象上定义和执行操作的 Java 2D 类。 java.awt.im 提供...

    DRR---java.rar_DRR_deficit round robin_discrete event java_event

    source code deficit round robin in java. use discrete event simulation

Global site tag (gtag.js) - Google Analytics