O código "brinca" com o jogo do Mario, mudando de estados de acordo com o estado anterior e com a transição. Por exemplo, se o Mario pegar uma flor de fogo, ele pode crescer, se estiver pequeno, e ficar com a habilidade de soltar bolas de fogo.
A seguir o diagrama de classes para melhor entendimento do uso do padrão.
O output após a execução do Cliente.java será o seguinte: