我正在寻找一种方法来执行以下操作:
一个项目:定义一个在某些事件发生时调用的抽象类(如果你愿意,事件处理程序)定义将使用上面的事件处理程序触发事件的引擎
B 项目:定义抽象类运行引擎的实现。
我如何注册实现类并确保它是引擎运行时被调用的类。
编辑1:通过注册我的意思是我必须以某种方式定义应该为给定的抽象对象调用哪个实现
抱歉,如果问题不太清楚,如果您需要更多详细信息,请告诉我
我正在寻找一种方法来执行以下操作:
一个项目:定义一个在某些事件发生时调用的抽象类(如果你愿意,事件处理程序)定义将使用上面的事件处理程序触发事件的引擎
B 项目:定义抽象类运行引擎的实现。
我如何注册实现类并确保它是引擎运行时被调用的类。
编辑1:通过注册我的意思是我必须以某种方式定义应该为给定的抽象对象调用哪个实现
抱歉,如果问题不太清楚,如果您需要更多详细信息,请告诉我
像这样的东西?
class A implements EventHandlerForB {
...
}
public class B {
private EventHandlerForB eventHandler;
public void registerEventHandler(EventHandlerForB eventHandler) {
this.eventHandler = eventHandler;
}
...
}
public interface EventHandlerForB {
...
}
在运行时,您可以在 A 项目中传递实现的名称(带有属性文件或 Java 系统属性)。然后你在类路径中找到这个类class.forName()
并用newInstance()
.
但是你更喜欢使用像Guice或 Spring 这样的框架,它可以让你以一种干净的方式将东西粘合在一起。
有几种“模式”试图解决这个问题。仅使用 JDK(6 或更高版本)类,您可能需要查看java.util.ServiceLoader