简单的Java Event-事件框架

代码:http://git.oschina.net/jmpp/CommonEvent

自己写的一个简单的Java事件框架。目前具备以下功能:

1.通过继承Event类,用户可自定义事件。

2.通过EventService 的fireEvent(Event e) 发出一个事件。

3.通过实现IEventHandler接口,监听某类事件。EventHandler可以动态注册到EventServer,也可以在配置文件中配置。

4.通过实现IEventConsumedCallback接口,在事件被处理后,通知事件发出者。IEventConsumedCallback可在fireEvent时指定,也可不指定。

5.fireEvent  和 Consume Event都是异步进行,Consume Event时采用线程池处理。

类图如下:

代码:http://git.oschina.net/jmpp/CommonEvent(包含测试代码)

测试:

1.自定义Event

import com.lenovo.commonevent.Event;

/**
 * Project:      CommonEvent
 * FileName:     TestEvent.java
 * @Description: TODO
 * @author:      jmpp
 * Createdate:   2015年3月16日 下午5:57:12
 * Copyright:    Copyright(C) 2014-2015
 * Company       Lenovo LTD.
 * All rights Reserved, Designed By Lenovo CIC.
 */

/**
 * 类 TestEvent 的实现描述:TODO 类实现描述
 *
 * @author jmpp 2015年3月16日下午5:57:12
 */
public class TestEvent extends Event {

    public TestEvent() {
        super(TestEvent.class.getSimpleName());
    }
}

2.定义一个EventHandler

import java.util.Date;

import com.lenovo.commonevent.Event;
import com.lenovo.commonevent.IEventHandler;

/**
 * Project:      CommonEvent
 * FileName:     TestEventHandler.java
 * @Description: TODO
 * @author:      jmpp
 * @version      V1.0
 * Createdate:   2015年3月16日 下午6:00:34
 * Copyright:    Copyright(C) 2014-2015
 * Company       Lenovo LTD.
 * All rights Reserved, Designed By Lenovo CIC.
 */

/**
 * 类 TestEventHandler 的实现描述:TODO 类实现描述
 *
 * @author jmpp 2015年3月16日下午6:00:34
 */
public class TestEventHandler implements IEventHandler {

    /**
     * @author jmpp 2015年3月16日下午6:00:48
     */
    @Override
    public Object onEvent(Event event) {

        System.out.println("On event  " + event.getId() + " Type:" + event.getType());
        return new Date();
    }

}

3.定义EventConsumedCallback

import java.util.Date;

import com.lenovo.commonevent.Event;
import com.lenovo.commonevent.EventService;
import com.lenovo.commonevent.IEventConsumedCallback;

/**
 * Project:      CommonEvent
 * FileName:     TestEventInvoker.java
 * @Description: TODO
 * @author:      jmpp
 * @version      V1.0
 * Createdate:   2015年3月16日 下午6:03:47
 * Copyright:    Copyright(C) 2014-2015
 * Company       Lenovo LTD.
 * All rights Reserved, Designed By Lenovo CIC.
 */

/**
 * 类 TestEventInvoker 的实现描述:TODO 类实现描述
 *
 * @author jmpp 2015年3月16日下午6:03:47
 */
public class TestEventInvoker implements IEventConsumedCallback {

    /**
     * @author jmpp 2015年3月16日下午6:04:02
     */
    @SuppressWarnings("deprecation")
    @Override
    public void onEventFinished(Event event, Object result) {
        System.out.println("Event callback " + event.getId() + " at "
                + ((Date) result).toLocaleString());

    }
}

4.测试调用  触发事件-〉处理事件(Handle) ->回调Callback

import java.util.Date;

import com.lenovo.commonevent.Event;
import com.lenovo.commonevent.EventService;
import com.lenovo.commonevent.IEventConsumedCallback;

/**
 * Project:      CommonEvent
 * FileName:     TestEventInvoker2.java
 * @Description: TODO
 * @author:      jmpp
 * @version      V1.0
 * Createdate:   2015年3月16日 下午6:03:47
 * Copyright:    Copyright(C) 2014-2015
 * Company       Lenovo LTD.
 * All rights Reserved, Designed By Lenovo CIC.
 */

/**
 * 类 TestEventInvoker2 的实现描述:TODO 类实现描述
 *
 * @author jmpp 2015年3月16日下午6:03:47
 */
public class TestEventInvoker2  {

    public static void main(String args[]) throws Exception {

        EventService.init(null);

        EventService.registerEventHandler(TestEvent.class.getSimpleName(), new TestEventHandler());

        for (int i = 0; i < 10; i++) {
            TestEvent event = new TestEvent();
            EventService.fireEvent(event, new TestEventInvoker());
        }

        Thread.sleep(5000);

        EventService.stop();
    }
}
时间: 2024-10-31 07:25:07

简单的Java Event-事件框架的相关文章

最简单的Java框架

框架framework的目的是定义骨架式方案,处理各种相同的底层细节:而开发人员使用框架时,能够依照自己的需求实现自己的功能--仅仅须要填入自己的东西/flesh. 最简单的框架,类似于JUnit,它有一个main(String[] args)启动本框架.假设是applet或GUI框架,就有太多底层细节须要处理. package principle.callback.lower; /** * 最简单的Java框架 * * @author yqj2065 * @version 2014.10 */

Venus 是一个简单的、高性能、高并发能力的java 开源Remoting框架

Venus 是一个简单的.高性能.高并发能力的java 开源Remoting框架 wiki地址:http://wiki.hexnova.com/display/Venus/HOME 性能测试:http://wiki.hexnova.com/pages/viewpage.action?pageId=1507358 产品发布日志: http://wiki.hexnova.com/pages/viewrecentblogposts.action?key=Venus 1. 如何服务化 采用接口与实现分离

简单总结焦点事件、Event事件对象、冒泡事件

每学习一些新的东西,要学会复习,总结和记录. 今天来简单总结一下学到的几个事件:焦点事件.Event事件对象.冒泡事件 其实这几个事件应该往深的说是挺难的,但今天主要是以一个小菜的角度去尝试理解一些基本的知识点. 1.焦点事件: 1.1概念理解: 想象场景:当一堆text文本框出现在面前,当点击其中一个文本框,它就会响应用户,并出现光标闪动(这时,点击令它获得焦点). 所以说:焦点事件是用来让浏览器区分哪一个对象是用户要进行操作(输入值.选择.跳转)的. 总结===>  浏览器(区分)哪一个对象

java实现对Google Calendar API event 事件的添加

参考文档: 参考demo: CalendarSample.java /*  * Copyright (c) 2010 Google Inc.  *  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except  * in compliance with the License. You may obtain a copy of the License

Spring Event的实现(简单实现、多事件的分配)

Spring 3.0中提供了很多类似*Aware的类,其中ApplicationContextAware接口可以实现我们在初始化bean的时候给bean注入ApplicationConxt(Spring上下文对象)对象.ApplicationContextAware接口提供了publishEvent方法,实现了Observe(观察者)设计模式的传播机制,实现了对bean的传播.通过ApplicationContextAware我们可以把系统中所有ApplicationEvent传播给系统中所有的

Java日志系统框架的设计与实现

推荐一篇好的文章介绍java日志系统框架的设计的文章:http://soft.chinabyte.com/database/438/11321938.shtml 文章内容总结: 日志系统对跟踪调试.程序状态记录.数据恢复等功能有重要作用 日志系统一般作为服务进程或者系统调用存在,我们一般程序中使用系统调用 常用日志系统包括log4j的简单介绍 日志系统的系统架构 日志系统的信息分级 日志输出的设计 下面是全文的引用: 在Java领域,存在大量的日志组件,open-open收录了21个日志组件.日

JS(event事件)

常用的event事件: 属性 此事件发生在何时... onabort 图像的加载被中断. onblur 元素失去焦点. onchange 域的内容被改变. onclick 当用户点击某个对象时调用的事件句柄. ondblclick 当用户双击某个对象时调用的事件句柄. onerror 在加载文档或图像时发生错误. onfocus 元素获得焦点. onkeydown 某个键盘按键被按下. onkeypress 某个键盘按键被按下并松开. onkeyup 某个键盘按键被松开. onload 一张页面

Java Junit测试框架

Java    Junit测试框架 1.相关概念 ? JUnit:是一个开发源代码的Java测试框架,用于编写和运行可重复的测试.它是用于单元测试框架体系xUnit的一个实例(用于java语言).主要用于白盒测试,回归测试. ? 白盒测试:把测试对象看作一个打开的盒子,程序内部的逻辑结构和其他信息对测试人 员是公开的. ? 回归测试:软件或环境的修复或更正后的再测试,自动测试工具对这类测试尤其有用. ? 单元测试:最小粒度的测试,以测试某个功能或代码块.一般由程序员来做,因为它需要知道内部程序设

开发大型项目必备 98%公司都在用的十佳 Java Web 应用框架

众所周知,工欲善其事,必先利其器.选择一个好的 Web 应用框架就像一把称手的兵器,可以助大家披荆斩棘. 今天就为大家整理了十佳 Java Web 应用框架,并简单讨论一下它们的优缺点. 第一,大名鼎鼎的Spring MVC框架.Spring MVC 框架堪称是一个教科书式的 MVC (模型Model.视图View和控制器Controller)框架,严格组照 MVC 模式要求进行分层设计.经过多年的发展,Spring MVC 已经发展成了一个 Web 应用程序的全能架构. 易用性方面, Spri