Java 在自定义文件筛选器中定义执行顺序

Java 在自定义文件筛选器中定义执行顺序,java,spring,spring-mvc,Java,Spring,Spring Mvc,我正在开发一个Spring3.1MVC应用程序,其中用户可以上传一个文件,并在文本上应用一些过滤器。例如,一个过滤器可以删除特殊字符,另一个过滤器可以识别语法错误 在我的第一个实现中,我使用了一个DB设置表,其中包含过滤器的名称和一个布尔值,该值指示应用程序是否应该执行它。我只需要获取活动过滤器的名称,然后转到哈希表以获取实例(实现FileFilter接口的对象)并执行它们。这种方法非常简单,在我创建新的过滤器之前一直很有效 这些新过滤器有两个问题: 某些筛选器具有依赖项。用户可以选择只运行过滤

我正在开发一个Spring3.1MVC应用程序,其中用户可以上传一个文件,并在文本上应用一些过滤器。例如,一个过滤器可以删除特殊字符,另一个过滤器可以识别语法错误

在我的第一个实现中,我使用了一个DB设置表,其中包含过滤器的名称和一个布尔值,该值指示应用程序是否应该执行它。我只需要获取活动过滤器的名称,然后转到哈希表以获取实例(实现FileFilter接口的对象)并执行它们。这种方法非常简单,在我创建新的过滤器之前一直很有效

这些新过滤器有两个问题:

  • 某些筛选器具有依赖项。用户可以选择只运行过滤器C,但此过滤器也需要执行过滤器A和B
  • 一些过滤器需要按顺序执行。例如,过滤器A可以在任何时刻执行,但过滤器B必须按照特定顺序在C和D之后执行

  • 我的问题(也是我真正的问题)是,我如何改变我的实现,使其适应这些新的过滤器,而无需添加大量代码,并且以干净的方式?

    我将为用户提供元过滤器(即可能的过滤器组合)之间的唯一选择。元过滤器(过滤器组合)是一个好主意。我必须考虑是否可以将它应用到我的场景中。我主要关心的是,我可以用过滤器B、C和D定义一个元过滤器,但我仍然希望用户能够只执行C或D。如果C和D没有DEP,你可以添加一个只使用C的元过滤器,另一个只使用D的元过滤器。这似乎是四人帮的情况。“模式如何?”Boristeider我不确定责任链是否适合在这里应用。正如我所说,一个过滤器可以有多个依赖项,并且执行顺序可以从一个过滤器更改为另一个过滤器。