2011-02-02 7 views
1

私はJavaで簡単なIRCクライアントをコーディングしています。今のところ、私はどのコマンドをユーザが入力しているかを判断しようとしています。私はif-else文の束を使うことができますが、それはあまり良いことではありません。私はスイッチを使うことを考えましたが、私はそれに代わる方法を探しています。例えばJavaでユーザ入力から呼び出すメソッドを決定する

:私は入力を取得することができNICKジョン

が、私がしたい:私は、ユーザーからいくつかのコマンド、PASS、NICK、USER、JOINを、PART、MODE

といくつかの例の入力を持っていますこれは、プログラムにmethod_nick(John)を呼び出すように指示するきれいで効率的な方法です。このメソッドは、それをサーバーに送信します。

正しい方向にちょうどいいところがあります。私はちょうどswitch/if-elsesなしでこれをどう扱うべきかに関して犠牲になっています。あなたがキーとアクションのコマンドオブジェクトとしてコマンド文字列でマップを使用することができ

);

答えて

2

スイッチケースを使用する場合、他のOMMITする良い方法。これは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マップアプローチ。このコンテキストでリフレクションを使用しないでください –

関連する問題