我有一组需要在服务器启动时启动的订阅者。
现在我正在实例化它们并在Application.java
中调用它们的run方法。
认为如果这些是自己实例化的,可能是使用自定义注释或属于某个接口(获取所有类的接口和实例化)会很棒。这样,将来编写新订阅者的任何人都不需要创建对象并在其上调用run()。
想知道是否有人先前解决了这个问题,是否有意义。
示例:
我有一个事件处理程序接口:
interface EventHandler {
void process(String data);
}
然后实现类:
public class CoolEventHandler implements EventHandler {
public void process(String data) {
//handle cool event
}
}
public class HotEventHandler implements EventHandler {
public void process(String data) {
//handle hot event
}
}
我有一个订阅服务,它监听远程API,如果有数据,它会将其传递给处理程序:
public class PollService {
public static void register(String API, EventHandler eventHandler) {
//create a thread to poll API
//and if data is received, call eventHandler.process()
}
}
在我的应用程序开始时,我正在Application.java
PollService.register("/cool", new CoolEventHandler());
PollService.register("/hot", new HotEventHandler());
明天如果有一个新的处理程序,比如WarmEventHandler
,我将不得不再次注册。我试图避免这最后一步。注册所有EventHandler
类的最佳方式是什么?