关于软件插件系统的实际操作,我有一个非常基本的问题.我理解一个简单的插件设计是如何工作的,即插件添加到托管应用程序的设计.例如,插件会为绘图程序添加新的过滤器.主机知道它必须调用插件提供的名为filter的方法.在这种情况下,所有插件都是独立的.
我的问题涉及一个插件可以使用另一个插件中的工具的情况.例如,可能有一个插件提供绘制数据的能力,而另一个插件生成数据.如果数据生成器插件之前从未见过图形插件,我认为它无法知道在图形插件中调用哪些方法.我认为在这些情况下,数据生成器插件的开发人员必须能够以抽象类或接口的形式访问图形插件API的描述.这是插件依赖的运作方式,即插件是否明确知道其他插件可能具有的Apis?
我刚刚构建了这样一个插件系统,并且插件能够使用其他插件,我在每个插件需要知道的插件接口的源代码副本中包含这些插件.这种方法的问题在于,如果出现一个新的绘图插件但是使用不同的API,则数据生成器插件无法在不先重新编译的情况下使用它,以便它知道新的API.这对我来说似乎不对.
我知道这似乎是一个非常简单的问题并有一个明显的答案,但我花了几个小时搜索互联网,我没有遇到关于这个问题的明确声明.