这是我参与 第五届青训营 伴学笔记创作活动的第6天。
重点内容
本节课作为一门实验课,从需求出发,为了简化代码开发需要设计一个规则引擎为目的,讲师围绕规则引擎的定义进行讲解,最后设计并实现一个简化版的规则引擎。
为什么要有规则引擎
任何脱离业务讲技术都是耍流氓!介绍规则引擎之前,我们先来分析个小需求。
假如你是抖音后端的研发工程师,有一天,产品经理来跟你讲需求,说需要根据用户购买产品的数量设置一定的积分,100元可以积累10个积分,200元20个积分,以此类推。
这还不简单,于是你咔咔咔写了个if-else循环,如果金额100元以下,不积分,反之按照我们的规则积分。
但是过了一段时间,产品经理又来说,哎呀,之前的规则太草率,我们改下规则,100-200金额,积累10分,200-300,积累20分,以此类推。
emmm,设定了个区间,但是也还好,于是也非常迅速的写出了代码。
结果到了中秋,万恶的产品又来了,我们需要搞个促销,规则再变一变......
也就是说,我们前端看到的业务的变化,是需要后端不断改变代码逻辑,如果代码耦合度太高,直接写死在代码里,可能稍微变了变业务需求,就需要大改特改代码。那么有没有一种通用的计算方式,能够输入我们的计算规则(比如积分规则)就能输出对应的积分呢?
有,我们可以定义个工具类,这时候,规则引擎闪亮登场!
定义
我们不管是开发还是使用,必然要知道这东西是啥吧,要不出问题了都不知道是什么问题。
简单来说,规则引擎就是一种嵌入在应用程序程序中的组件,就是个工具类!