2011-02-02 65 views
1

因此,我使用Java编写了一个简单的IRC客户端。到目前为止,我试图确定用户输入的命令。我知道我可以使用一些if-else语句,但这不是很好的做法。我想过使用一个开关,但我试图找到一个替代方案。确定从Java中的用户输入调用的方法

例如:我有一些命令,PASS,NICK,USER,JOIN,PART,MODE

和一些来自用户的输入例如:NICK约翰

我可以检索输入,但我想一种干净而有效的方式,可以告诉程序调用method_nick(John),然后将它发送到服务器。

只是在正确的方向点,将不胜感激。我不知道如何处理这个问题,而没有开关/ if-elses。

回答

2

到ommit的if-else是使用开关的情况下的一个好办法;)

您可以使用地图的命令字符串作为一个键和动作命令对象。这被称为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(); 

另一种方法是使用反射。

+0

+1为地图方法。在这种情况下不要使用反射 – 2011-02-02 06:20:35