我在表中有一堆行,其中存储了一些变量和关联的值。我必须根据不同行中变量的值来执行任务。来自多个行的多个值可以被AND / OR条件重叠。在这种情况下,哪种设计模式将有助于降低圈复杂度?
让我们说表 p>
现在在运行时需要测试一些条件。例如,
如果v1列的值是'a'或'b'并且第3和第4行包含任何'g'或第5行的全部包含值'f',等等。
这种要求在一定的固定范围内是动态的,我必须准备一种采用输入表和条件的方法。该方法最终返回true / false。如果我天真地实现,则需要在完全可能的条件下嵌套许多if / else,这会使我的代码复杂得多。什么是处理它的好模式。
答案 0 :(得分:4)
对于现实世界的情况,我认为您应该研究规则引擎,有关示例列表,请参见https://www.baeldung.com/java-rule-engines。
这里的重点是:用手写的代码表示规则不会扩展!没有良好的模式可以阻止这种代码库随时间转变为意大利面条式代码。在现实世界中,此类规则经常更改,而使您的代码保持最新状态通常会导致对其进行录音。
因此,我们拥有规则引擎,使您可以以比if else块的手写级联更好维护的方式来表达此类复杂决策的元素。
问题是:如果您对工作质量很认真,无论如何您很可能会实施自己的小规则引擎。那么,为什么不从货架上挑选一个,或者至少仔细研究一些东西,并以它们为灵感,如何更好地解决您的问题呢?