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