Определение методов для вызова из пользовательского ввода в Java - PullRequest
1 голос
/ 02 февраля 2011

Итак, я пишу простой IRC-клиент на Java. На данный момент я пытаюсь определить, какие команды вводит пользователь. Я знаю, что могу использовать кучу операторов if-else, но это не очень хорошая практика. Я думал об использовании переключателя, но я пытаюсь найти альтернативу этому.

Например: у меня есть несколько команд, PASS, NICK, USER, JOIN, PART, MODE

и некоторые примеры ввода от пользователя: Ник Джон

Я могу получить входные данные, но мне нужен чистый, эффективный способ, чтобы программа могла вызывать method_nick (John), который затем отправлял бы это на сервер.

Только точка в правильном направлении была бы оценена. Я просто в недоумении, как справиться с этим без switch / if-elses.

1 Ответ

2 голосов
/ 02 февраля 2011

Хороший способ пропустить if-else - использовать switch-case;)

Вы можете использовать map с командными строками в качестве ключей и командный объект для действия. Это называется шаблон команды .

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();

Другой подход заключается в использовании отражения.

...