Código C ++ para máquina de estado

Esta foi uma questão de entrevista a ser codificada em C ++:

Escrever código para uma máquina de venda automática: Comece com um simples, onde apenas vende um tipo de item. Então, duas variáveis ​​de estado: dinheiro e estoque, seriam suficientes.

Minha resposta:

Eu usaria uma máquina de estado que tem cerca de 3-4 estados. Use uma variável enum para indicar o estado e use uma instrução switch case, em que cada caso tem as operações a serem realizadas correspondentes a cada estado e permanece em um loop para passar de um estado para outro.

A próxima pergunta:

Mas o uso de uma instrução switch case não "escala bem" para mais estados sendo adicionados e modificando as operações existentes em um estado. Como você vai lidar com esse problema?

Eu não pude responder a essa pergunta naquele momento. Mas depois pensei, eu provavelmente posso:

tem funções diferentes para estados diferentes (cada função corresponde a um estado)tem umstd::map from (string, function) onde string indica estado para chamar a função de estado correspondente.A função main tem uma variável de string (começando no estado inicial) e chama a função correspondente a essa variável em um loop. Cada função faz as operações necessárias e retorna o novo estado para a função principal.

Minhas perguntas são:

Qual é o problema com as declarações de caso de switch no que diz respeito à escalabilidade no contexto de sistemas de software de grande escala?Em caso afirmativo, a minha solução (que atualmente sinto ser um pouco mais modular do que ter um código linear longo) resolverá o problema?

A questão da entrevista está esperando respostas de idiomas C ++ e padrões de projeto para sistemas de software de grande escala.

questionAnswers(6)

yourAnswerToTheQuestion