我正在开发一个 Spring 3.1 MVC 应用程序,用户可以在其中上传文件并在文本上应用一些过滤器。例如,一个过滤器可以删除特殊字符,另一个可以识别语法错误。
在我的第一个实现中,我使用了一个数据库设置表,其中包含过滤器的名称和一个布尔值,指示应用程序是否应该执行它。我只需要获取活动过滤器的名称并转到哈希表以获取实例(实现 FileFilter 接口的对象)并执行它们。这种方法非常简单,在我创建新过滤器之前效果很好。
这些新过滤器有两个问题:
- 一些过滤器具有依赖性。用户可以选择仅运行过滤器 C,但此过滤器还需要执行过滤器 A 和 B。
- 一些过滤器需要按顺序执行。例如,过滤器 A 可以随时执行,但过滤器 B 必须按特定顺序在 C 和 D 之后执行。
我对您的问题(也是我真正的问题)是,如何更改我的实现以使其适应这些新过滤器,而无需添加大量代码并且以一种干净的方式?