文档章节

简单的Java Event-事件框架

j
 jmppok
发布于 2015/03/25 10:14
字数 593
阅读 62
收藏 0


代码: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();
    }
}


本文转载自:http://blog.csdn.net/jmppok/article/details/44417275

j
粉丝 10
博文 138
码字总数 0
作品 2
海淀
高级程序员
私信 提问
bbossgroups 分布式事件处理框架特性

最近发布的bbossgroups框架中,包含了一个事件处理框架子项目bboss-event,该事件框架特性如下: 1.构建事件接口简洁,通俗易懂 2.发布事件接口简单,通俗易懂 3.事件发布器可以发布本地事件...

yin_bp
2010/04/06
8
0
AS3 Signals学习笔记01

最近在工作中无意才接触到了as3 signals这个玩意。AS3 Signals是个开源的轻量级框架,这个框架基本可以代替as3中内置的事件这套工作机制。好棒!因为在项目中,使用as3内置事件框架必须通过自...

ChildhoodAndy
2012/12/24
393
0
Android进阶——框架打造之IOC框架

什么是IOC IOC(Inversion of Control):控制反转。开发过程中类里面需要用到很多个成员变量 传统的写法:你要用这些成员变量的时候,那么你就new出来用 IOC的写法:你要用这些成员变量的时...

qq_30379689
2017/10/20
0
0
Sagit.Framework For IOS 开发框架入门开发教程2:一行代码实现引导页

前言: 开篇比较简单:Sagit.Framework For IOS 开发框架入门开发教程1:框架下载与环境配置 第二篇教程之前写了一半,感觉不太好写,而且内容单纯介绍API,要说的很多,又枯燥乏味。 所以那...

路过秋天
2017/12/18
0
0
Riot.js — 1Kb 大小的 JavaScript 的 MVP 框架

一个可以构建大型网络应用并令人难以置信快和强大但轻量级的客户端框架 Riot.js是一个客户端模型-视图-呈现(MVP)框架并且它非常轻量级甚至小于1kb.尽管他的大小令人难以置信,所有它能构建的...

oschina
2013/11/02
19.3K
52

没有更多内容

加载失败,请刷新页面

加载更多

新建作业20191011121223

2.编写一个程序,发出一声警报,然后打印下面的文本: Startled by the sudden sound,Sally shouted,"By the Great Pumpkin,what was that!" #include<stdio.h>int main(){printf("\a");......

电子197朱妍
21分钟前
3
0
家庭作业——苗钰婷

2 编写一个程序,发出一声警报,然后打印下面的文本: Startled by the sudden sound, Sally shouted, "By the Great Pumpkin, what was that! #include<stdio.h>int main(){......

OSC_Okruuv
42分钟前
6
0
经典系统设计面试题解析:如何设计TinyURL(一)

原文链接: https://www.educative.io/courses/grokking-the-system-design-interview/m2ygV4E81AR 编者注:本文以一道经典的系统设计面试题:《如何设计TinyURL》的参考答案和解析为例,帮助...

APEMESH
43分钟前
5
0
2.面向对象设计原则(7条)

开闭原则 开闭原则的含义是:当应用的需求改变时,在不修改软件实体的源代码或者二进制代码的前提下,可以扩展模块的功能,使其满足新的需求。 实现方法 可以通过“抽象约束、封装变化”来实...

Eappo_Geng
45分钟前
9
0
8086汇编基础 debug P命令 一步完成loop循环

    IDE : Masm for Windows 集成实验环境 2015     OS : Windows 10 x64 typesetting : Markdown    blog : my.oschina.net/zhichengjiu    gitee : gitee.com/zhichengjiu   ......

志成就
49分钟前
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部