Interface EventDispatcher

  • All Superinterfaces:
    Listenable<EventListener<?>>
    All Known Implementing Classes:
    AbstractEventDispatcher, DirectEventDispatcher, ParallelEventDispatcher

    public interface EventDispatcher
    extends Listenable<EventListener<?>>
    An interface that defines the contract for dispatching events to registered listeners.

    The EventDispatcher is responsible for managing and notifying event listeners when an event occurs. It provides methods for adding/removing listeners and dispatching events in a specific execution context.

    Example Usage

    Example 1: Using Default Dispatcher (Sequential Execution)

    
     EventDispatcher dispatcher = EventDispatcher.newDefault();
     dispatcher.addEventListener(myListener);
     dispatcher.dispatch(new MyEvent());
     

    Example 2: Using Parallel Dispatcher with Custom Executor

    
     Executor executor = Executors.newFixedThreadPool(4);
     EventDispatcher dispatcher = EventDispatcher.parallel(executor);
     dispatcher.addEventListener(myListener);
     dispatcher.dispatch(new MyEvent());
     

    Example 3: Adding Multiple Listeners

    
     dispatcher.addEventListeners(listener1, listener2, listener3);
     
    Since:
    1.0.0
    Author:
    Mercy
    See Also:
    Event, EventListener, DirectEventDispatcher
    • Field Detail

      • DIRECT_EXECUTOR

        static final java.util.concurrent.Executor DIRECT_EXECUTOR
        Direct Executor uses sequential execution model
    • Method Detail

      • parallel

        static EventDispatcher parallel​(java.util.concurrent.Executor executor)
        The parallel implementation of EventDispatcher with the specified Executor
        Parameters:
        executor - Executor
        Returns:
        the default implementation of EventDispatcher
      • getExecutor

        default java.util.concurrent.Executor getExecutor()
        The Executor to dispatch a event
        Returns:
        default implementation directly invoke Runnable.run() method, rather than multiple-threaded Executor. If the return value is null, the behavior is same as default.
        See Also:
        DIRECT_EXECUTOR