delphi – 插件/插件依赖如何工作?
关于软件插件系统的实际操作,我有一个非常基本的问题.我理解一个简单的插件设计是如何工作的,即插件添加到托管应用程序的设计.例如,插件会为绘图程序添加新的过滤器.主机知道它必须调用插件提供的名为filter的方法.在这种情况下,所有插件都是独立的.
我的问题涉及一个插件可以使用另一个插件中的工具的情况.例如,可能有一个插件提供绘制数据的能力,而另一个插件生成数据.如果数据生成器插件之前从未见过图形插件,我认为它无法知道在图形插件中调用哪些方法.我认为在这些情况下,数据生成器插件的开发人员必须能够以抽象类或接口的形式访问图形插件API的描述.这是插件依赖的运作方式,即插件是否明确知道其他插件可能具有的Apis? 我刚刚构建了这样一个插件系统,并且插件能够使用其他插件,我在每个插件需要知道的插件接口的源代码副本中包含这些插件.这种方法的问题在于,如果出现一个新的绘图插件但是使用不同的API,则数据生成器插件无法在不先重新编译的情况下使用它,以便它知道新的API.这对我来说似乎不对. 我知道这似乎是一个非常简单的问题并有一个明显的答案,但我花了几个小时搜索互联网,我没有遇到关于这个问题的明确声明. 解决方法
如果您的“新绘图插件”具有与您的代码所知的API不同的API,则除了让您的代码了解此API之外别无选择.
如果您控制所有这些,包括各种绘图插件,那么您应该指定所有绘图插件需要实现/支持的标准绘图API.这是关于某些任务可以使用不同提供程序(插件)的唯一方法. 标准“语言”是确保您可以使用接口的多个实现者(服务提供者)的方法.它也是您可以拥有相同界面的多个用户(服务的使用者)的方式. 对于任务的多个提供者和提供者的多个消费者的需要/期望可能是导致诸如OAuth之类的标准以及诸如HTTP,SMTP等协议的创建的原因. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |