Minha máquina de estado de nível superior tem alguns estados e arestas. Vou chamar isso de máquina de estado pai.
A ----> B ----> C
Qualquer estado na máquina de estado pai também pode ser uma máquina de estado. Vou chamar essas crianças de máquinas de estado.
___________
/ \
A ----> | B0->B1->B2 | ----> C
\____________/
Se a máquina de estado pai faz a transição de A para B, a máquina de estado de B assume o controle. Depois que B é executado, como ele deve abrir mão do controle para a máquina de estado pai e fazer a transição para o estado C? Qual padrão de design você usa?
Se você está se perguntando, eu tenho máquinas de estado filhos em máquinas de estado pai porque meu projeto exato é bastante complexo e é natural encapsular o funcionamento interno de um estado filho.
MachineContainer
classeB
que contenha B0, B1 e B2 e, quando B2 termina, passa o controle de volta para o contêiner, que depois passa para C ... Eu nunca tentei algo assim. É um problema interessante!