我坚持在后端的表单中实现一些条件规则。基本上我需要提出一种有效且可扩展的方法来实现这一目标。我正在研究这个二叉树和决策树,但仍然不确定实现它的最佳方法是什么。
正如您所看到的,有一个声明可能有多个条件由逻辑AND / OR分隔。基本上我需要知道的是将这些信息存储在数据库中的数据结构。当用户在通过过滤器时根据表单值提交表单时,它将充当过滤器。因此将执行某些操作。
答案 0 :(得分:0)
你的问题有点普遍,但让我看看能否帮助你入门。在Java中,您可以按如下方式设置类结构:
interface ConditionTree {
boolean evaluate(...);
}
class OperatorNode implements ConditionTree {
List<ConditionTree> subTrees = ....;
@Override
boolean evaluate(...) {
if(operator == AND) {
//loop through and evaluate each sub tree and make sure they are all true,
//or return false
}
else if(operator == OR) {
//loop through and evaluate each sub tree, and make sure at least one is
//true, or return false
}
}
}
class LeafNode implements ConditionTree {
@Override
boolean evaluate(...) {
//get the LHS, operator, and RHS, and evaluate them
}
}
注意它是一棵N-ary树,而不是一棵二叉树。