Авторский канал по разработке на Java.
Ресурсы, гайды, задачи, шпаргалки.
Информация ежедневно пополняется!
Cотрудничество: @energy_c
Post #2177
1.24K
Делаем простой registry обработчиков команд на Java!
Когда команд становится больше, длинная цепочка if/else быстро начинает мешать. Вместо этого можно хранить обработчики в Map.
Опишем интерфейс команды:
Создадим registry:
Добавим пару команд:
Теперь входную строку можно разделить:
Первый элемент — имя команды:
Достаём обработчик:
И запускаем, если команда существует:
Ожидаемый вывод для
Такой подход удобно расширять, новая команда добавляется одной строкой в registry, без переписывания большого switch.
👉 Java Ready | #практика
Когда команд становится больше, длинная цепочка if/else быстро начинает мешать. Вместо этого можно хранить обработчики в Map.
Опишем интерфейс команды:
@FunctionalInterface
interface Command {
void run(String[] args);
}
Создадим registry:
Map<String, Command> commands = new HashMap<>();
Добавим пару команд:
commands.put("hello", args ->
System.out.println("Hello, " + args[0]));
commands.put("sum", args ->
System.out.println(Integer.parseInt(args[0])
+ Integer.parseInt(args[1])));Теперь входную строку можно разделить:
String input = "sum 10 25";
String[] parts = input.split(" ");
Первый элемент — имя команды:
String name = parts[0];
String[] args = Arrays.copyOfRange(parts, 1, parts.length);
Достаём обработчик:
Command command = commands.get(name);
И запускаем, если команда существует:
if (command != null) {
command.run(args);
} else {
System.out.println("Unknown command");
}Ожидаемый вывод для
sum 10 25:35
Такой подход удобно расширять, новая команда добавляется одной строкой в registry, без переписывания большого switch.
👉 Java Ready | #практика
- 👍 10
- ❤ 6
- 🔥 2
- 😁 1

















