避免多重if条件

use*_*637 5 php java

可能重复:
在程序中替换或替换if..else if..else树的最佳方法是什么?

如何避免多个if条件?例如:

Public void search(String a,b,c,d,e)
String aTerm;
Run Code Online (Sandbox Code Playgroud)

现在哪个传递参数的单个和多个组合包含"aTerm"?例如,输出可能如下:

1 - aTerm appears in "a" only
2 - aTerm appears in "a,c", and "e"
3 - aTerm appears in "d" and "e"
Run Code Online (Sandbox Code Playgroud)

对于每个单独或可能的组合,我想调用一个特定的函数.我写了很多条件,但看起来很糟糕.例如:

If(aTerm. equalsIgnoreCase(a)){ call function a();}
If(aTerm. equalsIgnoreCase(b)){ call function b();}
If(aTerm. equalsIgnoreCase(b) and aTerm. equalsIgnoreCase(b)){ call function ab();}
…………………… and so on………………………….
Run Code Online (Sandbox Code Playgroud)

有没有更清洁的方法呢?解决方案可以是PHP或Java.

Nie*_*sol 1

构建一个字符串并通过字符串的名称调用该方法:

// Psuedo-code
str = "";
If( aTerm.equalsIgnoreCase(a)) str += "a";
If( aTerm.equalsIgnoreCase(b)) str += "b";
If( aTerm.equalsIgnoreCase(c)) str += "c";
If( aTerm.equalsIgnoreCase(d)) str += "d";
If( aTerm.equalsIgnoreCase(e)) str += "e";
call function named by str
Run Code Online (Sandbox Code Playgroud)