Обработка команд чат-бота?
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()
Вот тебе псевдо код, как-то так можешь сделать. Если вопросы остались, пиши
Почитайте про конечные автоматы.