Design patterns 根据特定规则过滤数据的设计模式

Design patterns 根据特定规则过滤数据的设计模式,design-patterns,Design Patterns,我需要根据某些规则过滤数据。例如,我有一个记录列表,另一方面我有一套规则。每个规则都会过滤掉这个列表。我还在维护这些规则的配置文件。这些规则可以通过配置文件打开/关闭 例如,考虑我的配置文件. [ { "rule": "rule-1", "class": "org.company.RuleOneFilter.class", "isEnabled": true }, { "rule": "rule-2", "class": "org.compan

我需要根据某些规则过滤数据。例如,我有一个记录列表,另一方面我有一套规则。每个规则都会过滤掉这个列表。我还在维护这些规则的配置文件。这些规则可以通过配置文件打开/关闭

例如,考虑我的配置文件.

[
  {
    "rule": "rule-1",
    "class": "org.company.RuleOneFilter.class",
    "isEnabled": true
  },
  {
    "rule": "rule-2",
    "class": "org.company.RuleTwoFilter.class",
    "isEnabled": false
  },
  {
    "rule": "rule-3",
    "class": "org.company.RuleThreeFilter.class",
    "isEnabled": true
  }
]

使用此文件,可以轻松插入或拔出规则。我已经检查了责任链的规范,但仍然不知道是否要去!有人能给我推荐一个合适的设计模式来实现这个吗?或者是否有任何框架来满足这一需求?

如果规则是累积的,那么责任链似乎是一项开销。
您不需要链接链中的规则,也不需要链/继任者/等等的概念。
您需要的是基本的:迭代器模式。您迭代规则列表的每个元素,并根据它们的状态(启用或未启用),将执行或不执行该规则。
当然,每个具体规则都必须派生自一个基类,以便以统一的方式进行操作

现在,如果规则不是累加的,而是关于执行的排他性规则,并且您需要在候选规则之间设置一个特定的顺序,那么责任链是有意义的