【问题标题】:How to combine pulgins for the same resource?如何为同一资源组合插件?
【发布时间】:2015-11-19 22:30:23
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-12
      • 2011-07-29
      • 1970-01-01
      • 2012-03-15
      • 1970-01-01
      • 1970-01-01
      • 2014-03-17
      • 1970-01-01
      相关资源
      最近更新 更多