class Event {
private String data;
public Event(String data) {
this.data = data;
}
public String getData() {
return data;
}
}
interface EventHandler {
void handleEvent(Event event);
}
class Conduit {
private List<EventHandler> handlers;
public Conduit() {
handlers = new ArrayList<>();
}
public void subscribe(EventHandler handler) {
handlers.add(handler);
}
public void publish(Event event) {
for (EventHandler handler : handlers) {
handler.handleEvent(event);
}
}
}
class DataHandler implements EventHandler {
@Override
public void handleEvent(Event event) {
System.out.println("Received data: " + event.getData());
}
}
public class Main {
public static void main(String[] args) {
Conduit conduit = new Conduit();
DataHandler handler = new DataHandler();
conduit.subscribe(handler);
Event event = new Event("Hello, world!");
conduit.publish(event);
}
}