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
}
]
使用此文件,可以轻松插入或拔出规则。我已经检查了责任链的规范,但仍然不知道是否要去!有人能给我推荐一个合适的设计模式来实现这个吗?或者是否有任何框架来满足这一需求?如果规则是累积的,那么责任链似乎是一项开销。
您不需要链接链中的规则,也不需要链/继任者/等等的概念。
您需要的是基本的:迭代器模式。您迭代规则列表的每个元素,并根据它们的状态(启用或未启用),将执行或不执行该规则。
当然,每个具体规则都必须派生自一个基类,以便以统一的方式进行操作 现在,如果规则不是累加的,而是关于执行的排他性规则,并且您需要在候选规则之间设置一个特定的顺序,那么责任链是有意义的