2011-02-02 49 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

相關問題