簡單的Java Event-事件架構

來源:互聯網
上載者:User

標籤: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();    }}


簡單的Java Event-事件架構

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.