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

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

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

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

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

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

类图如下:

测试:

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) ->回调Callbackimport 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();

}

}

原文:http://blog.csdn.net/jmppok/article/details/44417275

java event事件_简单的Java Event-事件框架相关推荐

  1. java ssh客户端_简单的Java SSH客户端

    java ssh客户端 可以使用jcabi-ssh在Java中通过几行代码通过SSH执行shell命令: String hello = new Shell.Plain(new SSH("ss ...

  2. java 静态块初始化_简单了解java中静态初始化块的执行顺序

    这篇文章主要介绍了简单了解java中静态初始化块的执行顺序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在java中,其应该是先于所有的方法执行. ...

  3. java mapreduce程序_简单的java Hadoop MapReduce程序(计算平均成绩)从打包到提交及运行...

    [TOC] 简单的java Hadoop MapReduce程序(计算平均成绩)从打包到提交及运行 程序源码 import java.io.IOException; import java.util. ...

  4. java ear包_简单介绍Java 的JAR包、EAR包、WAR包区别

    原标题:简单介绍Java 的JAR包.EAR包.WAR包区别 WAR包 WAR(Web Archive file)网络应用程序文件,是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件.War专 ...

  5. java for 死循环_简单的java死循环 java中的死循环问题

    java中死循环是什么意思 循环一次不再循环是死循环java中死循环是什么意思 循环一次不再循环是死循环 还是不断循环才是死JAVA中死循环的意思是,不停地循环,不会终止,例如: for (int i ...

  6. udp java 检测连接_简单的JAVA UDP连接测试

    UDP不像TCP那样专门提供了一个SERVER端API,所有的都用DatagramSocket,接受packet数据报.所以说UDP是无连接的,因为所有的链接都是在数据报里,让DatagramSock ...

  7. java学生通讯录_简单实现Java通讯录系统

    本文实例为大家分享了Java通讯录系统的具体代码,供大家参考,具体内容如下 import java.util.Scanner; class Person { String name; String n ...

  8. java进行抽奖_简单实现java抽奖系统

    本文为大家分享了java抽奖系统的具体代码,供大家参考,具体内容如下 用户信息类 /* * 用户信息类 * 1.账号 * 2.密码 * 3.卡号 * 4.是否登录 */ public class Us ...

  9. java 创建水果_简单的java水果商店后台

    packagecom.fruit;importjava.util.ArrayList;importjava.util.Scanner;public classFruitshop {public sta ...

最新文章

  1. python中 doc_python中doc转pdf
  2. 近段时间学习html和CSS的一些细碎总结
  3. 2014年:这些词都快被玩坏了
  4. Jquery 将后台返回的字符串转换成Json格式的数据
  5. mysql 多表查询实例讲解_mysql多表连接查询实例讲解
  6. C语言 | 编译与预处理指令(宏定义完整讲解:#define)
  7. 【深度学习】深度学习中的知识蒸馏技术(上)简介
  8. semantic ui要装什么才能使用
  9. 生成二维码的 jQuery 插件:jquery.qrcode.js
  10. 杨振宁与清华计算机系,他是顶级计算机专家,清华最受欢迎教授,在国际上与杨振宁齐名...
  11. postgresql查看表的创建者和表的权限
  12. java整蛊小游戏源码_java小游戏源代码
  13. UDP读取发送工具类
  14. 第二章 让你的kali系统变得更好用
  15. python 读取PDF内容(推荐pdfplumber)
  16. Unity人物残影实现
  17. 海量数据荣获华为“中国政企数据存储优秀合作伙伴”金奖
  18. 关于UE4中VR项目优化小记
  19. 苹果app退款_你有一笔来自苹果App Store的不明扣款
  20. 《深度学习推荐系统》

热门文章

  1. python3.x 批量将Coursera字幕格式.vtt转换为.srt格式
  2. 漏洞挖掘——实验11 侧信道攻击+TCP/IP实验
  3. Ubuntu的ftp突然连不上了
  4. Linux无法联网解决办法
  5. 变电运行300题……1
  6. 2020年之中国游戏产业
  7. flutter中的过场动画 PageTransitionsTheme
  8. c语言怎么进行大整数加法,c语言 大整数加法
  9. 非酋用计算机弹唱,·181· 《非酋》弹唱谱
  10. 美国智能音响生态系统对比分析