@justslipknot

Обработка команд чат-бота?

Ломаю голову над тем , как обрабатывать команды чат-бота. Самый легкий и , наверное , тупой способ -- if ( message == "any_command") // код. Или то же самое но с помощью switch. Но с ростом количества команд, это смотрится ужасно. Так же при первом подходе есть проблема с обработкой аргументов (command arg1 arg2 arg3 ... ) Может есть какие-нибудь другие способы ?
  • Вопрос задан
  • 196 просмотров
Пригласить эксперта
Ответы на вопрос 3
@Div100
interface ICommand {
    execute();
}

Command1 implements ICommand {
   execute() {
        //command1 job  
   };
}

Command2 implements ICommand {
   execute() {
        //command2 job  
   };
}
//далее делаешь комманд фактори, который будет возвращать по интерфейсу ICommand и //вызывать у них execute
//в самой CommandFactory можешь использовать CommandRegistry, в которой будут 
//храниться все существующие команды и оттуда просто 
//CommandRegistry.get(commandName). В registry можешь в Map<String, ICommand> хранить
CommandFactory.get(commandName).execute()

Вот тебе псевдо код, как-то так можешь сделать. Если вопросы остались, пиши
Ответ написан
Комментировать
danial72
@danial72
flutter dart.
Не уверен что на шарпе так можно, но можно сделать массив где ключом будет команда, а значением указатель на функцию.
Ответ написан
sergey-gornostaev
@sergey-gornostaev
Седой и строгий
Почитайте про конечные автоматы.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы