背景
规则匹配需求:
规则包括相等、不等、正则匹配、包含、不含、为空、不空、大于、小于、区间等等
数据类型包括字符串、数值型(整形、长整型、浮点数)、时间型(绝对时间、相对时间)
获取一条记录,提取其中某个字段,根据字段类型,与给定的值根据规则进行判定,满足返回true
实现
初版
使用大量if-else分支根据字段类型和规则两个逻辑条件进行判定(最终写了大几百行)
if (type.equal("varchar") || type.equal("text")) {
if(rule.equal("equal")) {
// TODO 判定逻辑
} else if (rule.equal("empty")) {
// TODO 判定逻辑
}
...
} else if (type.equal("integer")) {
if(rule.equal("equal")) {
// TODO 判定逻辑
} else if (rule.equal("empty")) {
// TODO 判定逻辑
}
...
}
...
优点:长驱直入,通俗易懂
缺点