3

我正在一个项目的逻辑架构中工作,该项目从用户那里接收一些信息并对其进行处理。要求之一是为外部开发人员公开一个接口以添加更多功能。到目前为止,我已经提出了一个 MVC 2 层架构,其中 View 和 Controller 运行在用户的机器中,而 Model 托管在应用程序服务器中并远程调用。对功能的要求建议我使用插件模式。

处理信息时可能会执行用户选择的其他步骤,因此我想将它们建模为应用程序发布时已经存在的插件。这意味着这个插件会影响同一个资源(处理流程),我不确定当两个插件都启用时如何处理这个问题。

由于我对插件模式不像其他模式那样熟悉,所以我在询问之前所做的阅读让我尝试了类似于抽象工厂模式的东西。问题是,当启用两个或更多插件时,我需要多重继承。我还想到了 Builder 模式来分别对处理步骤进行建模,但是必须定义插件之间的顺序,这会影响插件开发人员的独立性。

4

1 回答 1

2

如果我理解正确,您希望能够使用多个独立插件扩展相同的变化点。如果是这样,管道和过滤器模式是一种合适的机制

使用这种方法,插件代表过滤器,您可以设计一个插件容器来加载然后链接它们。如果没有为给定的变化点加载插件,那么您要么短路变化点,要么提供某种形式的默认过滤器。

此外,为插件提供一种机制来指定它们在过滤器链中的位置将很有帮助,因此在设计插件接口时要考虑这一点。

于 2015-11-20T08:17:17.240 回答