所以我用Java编写一个简单的IRC客户端。截至目前,我正在尝试确定用户输入的命令。我知道我可以使用一堆if-else语句,但这不是很好的做法。我想过使用一个开关,但我试图找到一个替代方案。
例如:我有一些命令,PASS,NICK,USER,JOIN,PART,MODE
以及来自用户的一些示例输入:NICK John
我可以检索输入,但是我想要一种干净,有效的方法来告诉程序调用method_nick(John),然后将其发送到服务器。
正确的方向上的一点将不胜感激。我不知道如何在没有开关/ if-elses的情况下处理这个问题。
答案 0 :(得分:2)
省略if-else的好方法是使用switch-case;)
您可以使用带有命令字符串的map作为操作的键和命令对象。这称为Command Pattern。
Map<String,Action> m=new Map<String,Action>();
m.put("NICK", new Action() { public void execute() {... } });
m.put("PASS", new Action() { public void execute() {... } });
然后:
m.get(command_from_irc).execute();
另一种方法是使用反射。