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; }
}