小编典典

Java中if语句的详细列表

java

抱歉,找不到答案,我几乎可以肯定有人提出过这个问题。

我的问题是我正在编写一些系统库来运行嵌入式设备。我有可以通过无线电广播发送到这些设备的命令。这只能通过文本来完成。在系统库中,我有一个线程来处理看起来像这样的命令

if (value.equals("A")) { doCommandA() }
else if (value.equals("B")) { doCommandB() } 
else if etc. 

问题在于,要执行的命令很多,很快就会变成无法控制的事情。在几个月的时间里,看起来很可怕,调试起来很痛苦,而且难以理解。


阅读 544

收藏
2020-03-10

共1个答案

小编典典

使用命令模式:

public interface Command {
     void exec();
}

public class CommandA() implements Command {

     void exec() {
          // ... 
     }
}

// etc etc

然后构建一个Map<String,Command>对象并用Command实例填充它:

commandMap.put("A", new CommandA());
commandMap.put("B", new CommandB());

那么你可以将if / else if链替换为:

commandMap.get(value).exec();

编辑

你还可以添加诸如UnknownCommand或的特殊命令NullCommand,但是你需要一个CommandMap处理这些特殊情况的命令,以最大程度地减少客户的检查。

2020-03-10