我需要根据一定的规则过滤数据。例如,我有一个记录列表,而另一方面,我有一组规则。每条规则都会过滤掉这个列表。我还为这些规则维护一个配置文件。这些规则可以通过配置文件打开或关闭。
例如,考虑我的配置文件..
[
{
"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
}
]使用此文件,规则将很容易插入或拔出。我已经检查了责任链的规范,但仍然搞不懂是否要这么做!有人能建议我一个适当的设计模式来实现这一点吗?或者是否有任何框架来满足这一需求?
发布于 2018-07-03 11:35:23
如果规则是累加的,责任链似乎是间接的。
您不需要将规则链接到链中,也不需要使用链/后继/等概念。
您需要的是基本的:迭代器模式。在规则列表的每个元素上迭代,根据它们的状态(不管是否启用),规则将被执行或不执行。
当然,每个具体规则都必须从要以统一方式操作的基类中派生。
现在,如果规则不是累加的,而是排他性的,而且你需要在候选人规则之间设定一个特定的顺序,那么责任链就有意义了。
https://stackoverflow.com/questions/51153412
复制相似问题