开发基于模块或插件的系统应该如何开始?
题
我打算开发一个完全基于模块的系统。系统基础应该支持查找插件、启动它们并能够为这些模块提供通信方式。理想情况下,人们应该能够随意放入新模块并删除未使用的模块,并且模块应该能够使用彼此的功能(如果可用)。
该系统应该用作模拟系统的基础,其中很多事情发生在不同的模块中,并且其他模块可能想要基于该系统做一些事情。
我打算开发的系统将采用 Java 语言。在我看来,我打算为每个模块建立一个带有子文件夹的文件夹,其中包含一个 XML,该 XML 描述了模块的信息,例如名称、可能会引发哪些事件等。我想我可能需要编写一个自定义类加载器来解决这个问题。
问题是,我不知道我的想法是否真的站得住脚,当然,我打算构建一个工作原型。然而,我以前从未研究过真正的模块化系统,而且我不太确定解决这个问题的最佳方法是什么。
我应该从哪里开始?在开发此类系统时是否发现了常见的问题和陷阱?如何使模块相互通信,同时保持隔离(即,删除一个模块,而使用它的另一个模块保持正常)?是否有任何我可以阅读的指南、规范或文章可以为我提供一些关于从哪里开始的想法?如果它们基于 Java 会更好,但这不是必需的,因为我现在正在寻找的是想法,而不是代码。
如有任何反馈,我们将不胜感激。
不隶属于 StackOverflow