版权声明:本文为博主原创文章转载请写明出处。 /wo/article/details/
在Java中如果有重复的代码我们会考虑进行重构,抽取公共方法或继承父类以减少相同的代码在多处出现,達到代码的最优管理和不必要的麻烦Drools同样提供了类似的功能。下面我们以实例来逐步说明
像下面最原始的两条规则,有相同的业务判斷也有不同的地方:
现在Drools提供了extends特性,也就是一个规则可以继承另外一个规则并获得其约束条件。改写之后执行效果相同代码如下:
我们可以看到上面使用了extends,后面紧跟的是另外一条规则的名称这样,第二条规则同时拥有了第一条规则的约束条件只需要单独写此條规则自身额外需要的约束条件即可。那么现在是否是最优的写法吗?当然不是还可以将两条规则合并成一条来规则。这就用到了do和標记
在then中标记了giveDiscount处理操作,在when中用do来调用标记的操作这样也当第一个约束条件判断完成之后,就执行标记giveDiscount中的操作然后继续执行Car的約束判断,通过之后执行默认的操作
在then中还可以添加一些判断来执行标记的操作,这样就不必每次都执行do操作而是每当满足if条件之后財执行:
同时,还可以通过break来中断后续的判断
以上规则的执行测试代码如下,执行结果可自行尝试源代码已经存放在GitHub:。
此系列課程持续更新中QQ群:(可扫描左上侧栏目二维码),欢迎大家加入讨论点击链接关注。由于Drools资料较少教程编写不易,每篇博客都亲身实践编写demo如果对你有帮助也欢迎赞赏(微信)! 也是对原创的最大支持!