package dev.kske.chess.event; import java.util.ArrayList; import java.util.List; /** * Project: Chess
* File: EventBus.java
* Created: 7 Aug 2019
* Author: Kai S. K. Engelbart */ public class EventBus { private List subscribers; private static EventBus instance; public static EventBus getInstance() { if (instance == null) instance = new EventBus(); return instance; } private EventBus() { subscribers = new ArrayList<>(); } public void register(Subscribable subscribable) { subscribers.add(subscribable); } public void dispatch(Event event) { subscribers.stream().filter(e -> e.supports().contains(event.getClass())).forEach(e -> e.handle(event)); } public List getSubscribers() { return subscribers; } }