如何结合相同资源的pulgins?

时间:2015-11-19 22:30:23

标签: model-view-controller plugins architecture 2-tier

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

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

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

1 个答案:

答案 0 :(得分:2)

如果我理解正确,您希望能够使用多个独立插件扩展相同的变体点。如果是这样, pipes and filters pattern是一种适当的机制

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

另外,为插件提供一个机制来指定它们在过滤器链中的位置将会很有帮助,所以在设计插件接口时请考虑一下。