← Questões de Engenharia de Software

Engenharia de Software · Avança SP · 2025

Questão comentada de Engenharia de Software

Em um sistema web desenvolvido em Java, qual padrão de projeto (design pattern) é mais adequado para gerenciar diferentes estados de um pedido em um e-commerce?

Gabarito: B

Quando você tem um objeto que muda de comportamento conforme o momento do processo, o padrão mais adequado costuma ser o State. Pense no pedido de um e-commerce: ele pode estar "Novo", "Pago", "Separado", "Enviado", "Entregue" ou "Cancelado". Em cada fase, as regras mudam, e o código fica mais limpo quando cada estado sabe o que pode ou não fazer, em vez de ficar cheio de if e switch espalhados por todo lado. O State Pattern serve justamente para representar o comportamento de um objeto quando seu estado interno muda. A ideia é evitar aquela lógica engessada de "se estiver pago faz isso, se estiver enviado faz aquilo". Em vez disso, cada estado encapsula suas próprias regras, tornando o sistema mais fácil de manter e evoluir. No caso da questão, o pedido em um e-commerce é um exemplo clássico: não faz sentido permitir "enviar" um pedido ainda não pago, por exemplo. Com State, o próprio estado do pedido controla as transições e ações válidas, deixando o código mais organizado e próximo da regra de negócio. É por isso que a alternativa B está correta. Em concursos, vale guardar a diferença: State trata mudança de comportamento conforme o estado interno; Strategy trata troca de algoritmo por escolha externa. Aqui não é sobre escolher uma estratégia de cálculo, e sim sobre a vida do pedido mudando de fase. É o tipo de detalhe que banca adora cobrar com sorriso maroto.

Continue treinando

Questões relacionadas