什么设计模式适用于处理许多条件分支?

3
我是一名有用的助手,可以为您翻译文本。
我有一张表格,其中存储了一些变量和相关值的行。根据不同行的变量值,我必须触发一个任务。多个行的多个值可以通过AND/OR条件重叠。在这种情况下,哪种设计模式有助于减少圆形复杂度?
比方说,表格:

table

现在需要在运行时测试一些条件。例如,如果v1列有任何值'a'或'b',并且第3和第4行包含任何'g',或者所有第5行都包含值'f'等等。这种要求在一定的固定边界内是动态的,我必须准备一个方法,该方法接受输入表格和条件,并最终返回true/false。如果我采用简单的实现方式,在完全有界的可能条件下需要许多嵌套的if/else语句,这会使我的代码变得非常复杂。有什么好的模式可以处理它呢?

这是一个Java问题还是HTML问题?代码在哪里? - AJNeufeld
@GhostCat 只需点击“运行代码片段”,它就会显示表格。将文本制成表格可能会更不方便阅读者。 - Sazzad Hissain Khan
@AJNeufeld 这个表只是Java/Android项目下的SQLite快照。点击运行代码片段按钮即可查看简单表格。 - Sazzad Hissain Khan
实际上,我想要一个好的设计模式来避免许多嵌套的if/else。 - Sazzad Hissain Khan
3
我已经用图片替换了表格。我觉得现在应该更方便了。谢谢。 - Sazzad Hissain Khan
1个回答

4
针对实际场景,建议您考虑研究规则引擎,可以查看https://www.baeldung.com/java-rule-engines 了解示例列表。
重点在于:用手写代码表示规则并不具备可扩展性!没有好的模式可以防止这样的代码库逐渐变成意大利面条式代码。在现实中,这些规则经常发生变化,将代码保持最新状态通常意味着要再多加一层条件。
因此我们有了规则引擎,可以让您以比手写if else语句更好维护的方式表达这些复杂决策的元素。
而且事实上:如果您认真对待工作的质量,最终很可能会自己实现一个小型规则引擎。那么为什么不从现成的引擎中选择一个,或者至少仔细研究一些引擎,并将它们用作解决问题的灵感?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接