定义抽象对象实现(Define Implementation for abstract Object

2019-09-27 03:28发布

我正在寻找一种方式来做到以下几点:

项目:定义当一些事件发生,被称为抽象类(事件处理程序,如果你愿意)定义将使用上面的事件处理程序激发的事件引擎

B类项目:定义抽象类的实现运行发动机。

如何注册实现类,并确保在发动机运行时被调用的一个。

编辑1:通过寄存器我的意思是我必须以某种方式确定哪些是应该呼吁,鉴于抽象对象实施

很抱歉,如果这个问题是不是太清楚,让我知道,如果你需要更多的细节

Answer 1:

在运行时,你可以在你的一个项目通过实施(与属性文件或Java系统属性)的名称。 然后,你发现这个类在类路径class.forName()并用实例化它newInstance()

但是,你更喜欢使用类似的框架吉斯或Spring,这将允许你在一个干净的方式粘合在一起的东西。



Answer 2:

像这样的事情?

class A implements EventHandlerForB {
...
}

public class B {
  private EventHandlerForB eventHandler;

  public void registerEventHandler(EventHandlerForB eventHandler) {
    this.eventHandler = eventHandler;
  }
...
}

public interface EventHandlerForB {
...
}


Answer 3:

有几个“模式”,尝试解决这一问题。 仅使用JDK(6或以上)班,你可能想看看java.util.ServiceLoader



文章来源: Define Implementation for abstract Object