规则引擎
需求背景
实现
type Rule struct {
Condition func() bool // 条件,这里用了一个 bool型 的函数简化。实际应用中一般是一个条件字符串
Action func() // 动作,符合条件的情况下需要执行的函数,一般为赋值语句
}
type RuleEngine struct {
rules []*Rule
}
func NewRuleEngine() *RuleEngine {
return &RuleEngine{}
}
func (re *RuleEngine) AddRule(rule *Rule) {
re.rules = append(re.rules, rule)
}
func (re *RuleEngine) Run() {
for _, rule := range re.rules {
if rule.Condition() { // 如果满足条件
rule.Action() // 执行动作
}
}
}参考代码
Last updated