项目作者: x-stars

项目描述 :
Java multicast event implementation by functional interface.
高级语言: Java
项目地址: git://github.com/x-stars/java-multicast-event.git
创建时间: 2020-05-16T14:51:52Z
项目社区:https://github.com/x-stars/java-multicast-event

开源协议:MIT License

下载


Java 多播事件模式

Java 事件模式基于函数接口的多播实现,可实现一个事件调用多个事件处理方法。

主要类型

  1. package org.xstars.event;
  2. import java.util.EventObject;
  3. // 表示一个事件回调函数。
  4. public interface EventCallback<E extends EventObject> { ... }
  5. // 表示一个事件订阅器,可以向事件添加或移除回调函数。
  6. public interface EventRegister<E extends EventObject> { ... }
  7. // 表示一个事件管理器,可以向事件添加或移除回调函数,在事件触发时调用其中包含的回调函数。
  8. public interface EventManager<E extends EventObject> extends EventRegister<E> { ... }
  9. // 事件管理器的默认实现,可以向事件添加或移除回调函数,在事件触发时调用其中包含的回调函数。
  10. public class SimpleEventManager<E extends EventObject> implements EventManager<E> { ... }

使用范例

定义事件

  1. import java.util.EventObject;
  2. // 对内定义事件。
  3. protected final EventManager<EventObject> timePassedOneMinuteEvent;
  4. // 对外暴露事件订阅器。
  5. public EventRegister<EventObject> timePassedOneMinuteEvent() {
  6. return this.timePassedOneMinuteEvent;
  7. }

订阅事件

  1. import java.util.EventObject;
  2. public void addMagician(Magician magician) {
  3. // 订阅事件,添加事件处理函数。
  4. magician.timePassedOneMinuteEvent().addCallback(this::addOneSecond);
  5. }
  6. // 事件处理函数。
  7. private void addOneSecond(EventObject event) {
  8. this.seconds++;
  9. }