对于一项作业,我需要创建一个基本处理器,可以使用简单的函数,例如 ADD、SUB、LOAD、STORE 和 JUMP
作为输入,我必须使用文本文件,解析 20 个不同的命令,然后执行它们。
我的问题是如何最好地解析字符串,将它们与相应的命令匹配然后执行它们?
例如,我可以逐行解析文件,标记字符串,通过包含所有命令的大量 if-else 语句发送标记,然后通过为每个命令创建一个类(事先)来调用命令,然后执行该类。但我认为这不是最好的方法。有没有更好的方法或者我可以改进我的示例中的某些内容?
最佳答案
将命令作为接口(interface)并将其映射到String
。
interface Command{
void execute();
}
Map<String, Command> map = new HashMap<>();
接下来相应地映射命令的所有实现:
map.put("ADD", () -> System.out.println("Calling Add"));
然后,一旦您对线路进行标记,只需搜索 map 并执行命令,并且不要忘记检查命令是否存在。
for (String token : tokens){
map.getOrDefault(token, () -> System.out.println("Command " + token + " not found")).execute();
}
关于java - 解析大量命令的最智能方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56065933/