我正在寻找一种方式来做到以下几点:
项目:定义当一些事件发生,被称为抽象类(事件处理程序,如果你愿意)定义将使用上面的事件处理程序激发的事件引擎
B类项目:定义抽象类的实现运行发动机。
如何注册实现类,并确保在发动机运行时被调用的一个。
编辑1:通过寄存器我的意思是我必须以某种方式确定哪些是应该呼吁,鉴于抽象对象实施
很抱歉,如果这个问题是不是太清楚,让我知道,如果你需要更多的细节
我正在寻找一种方式来做到以下几点:
项目:定义当一些事件发生,被称为抽象类(事件处理程序,如果你愿意)定义将使用上面的事件处理程序激发的事件引擎
B类项目:定义抽象类的实现运行发动机。
如何注册实现类,并确保在发动机运行时被调用的一个。
编辑1:通过寄存器我的意思是我必须以某种方式确定哪些是应该呼吁,鉴于抽象对象实施
很抱歉,如果这个问题是不是太清楚,让我知道,如果你需要更多的细节
在运行时,你可以在你的一个项目通过实施(与属性文件或Java系统属性)的名称。 然后,你发现这个类在类路径class.forName()
并用实例化它newInstance()
但是,你更喜欢使用类似的框架吉斯或Spring,这将允许你在一个干净的方式粘合在一起的东西。
像这样的事情?
class A implements EventHandlerForB {
...
}
public class B {
private EventHandlerForB eventHandler;
public void registerEventHandler(EventHandlerForB eventHandler) {
this.eventHandler = eventHandler;
}
...
}
public interface EventHandlerForB {
...
}
有几个“模式”,尝试解决这一问题。 仅使用JDK(6或以上)班,你可能想看看java.util.ServiceLoader