我有一个 Java 命令行应用程序,它在运行源代码中定义的一些步骤后创建一个报告文件。现在我想将这些步骤与我的应用程序的核心功能分开,因为我希望应用程序可以运行动态加载的“步骤”。这意味着,我的应用程序的核心功能是创建报告文件。并且分开的“步骤”应该提供报告的内容。
我决定将这些步骤实现为我的应用程序中的插件。使用该应用程序的每个人都可以使用现有的或自己编写的插件对其进行扩展。
现在我的问题是,就我而言,为我的应用程序开发插件系统的最佳方式是什么?我进行了很多研究并获得了很多意见。我无法决定我应该如何解决这个问题。
SO的有趣问题:
在我的研究中,我收集了一些信息,我可以如何解决它:
- 使用 ServiceLoader:一个简单的服务提供者加载工具。
- 使用 NetBeans 中的 org.openide.util.Lookup(动态注册和查找组件)
- 定义自己的 Plug-in 接口,必须从插件中实现。然后使用 Java ClassLoader 加载这些类并创建它们的实例。
- 使用 OSGi,但我认为这是为了我的目的而“大”。
解决我的问题的最佳方法是什么:
- 一个优雅的插件架构(可能使用一些设计模式),
- 易于维护的源代码,
- 并且易于开发插件。
我使用插件系统的方法是否正确?或者还有什么我可以用的吗?