Ana está implementando um sistema de comércio eletrônico e agora está definindo a operação de pagamento para a compra, podendo aceitar cartão de crédito, PIX ou boleto. Como a ação de pagamento envolve apenas a conciliação do valor final da compra, mas segundo diferentes meios de pagamento, Ana, com o objetivo de organizar seu código, permitiu a escolha do meio de pagamento por intermédio do padrão:
- A)State;
Errada, porque State depende da mudança de estado interno para alterar o comportamento, e aqui o foco é escolher entre meios de pagamento diferentes.
- B)Interpreter;
Errada, pois Interpreter serve para interpretar gramáticas ou linguagens específicas, não para selecionar formas de pagamento.
- C)Prototype;
Errada, já que Prototype trata de criar novos objetos por clonagem de uma instância existente, o que não tem relação com o problema.
- D)Memento;
Errada, porque Memento é usado para guardar e restaurar estados anteriores, como um “desfazer”, e não para variar a forma de pagamento.
- E)Strategy.
Certa, pois Strategy permite encapsular diferentes maneiras de executar uma mesma operação e escolher a mais adequada em tempo de execução.
Gabarito: E
Aqui a ideia central é simples: quando você tem uma mesma finalidade de negócio, mas com formas diferentes de executar essa finalidade, o padrão mais adequado costuma ser o Strategy. No caso, o sistema precisa “pagar” a compra, mas o meio de pagamento pode variar entre cartão, PIX ou boleto. O comportamento muda, mas a intenção continua a mesma: concluir o pagamento. Isso é exatamente o cenário clássico de trocar algoritmos ou formas de execução sem mexer no restante do código. Com Strategy, você encapsula cada forma de pagamento em uma classe diferente e escolhe qual delas usar em tempo de execução. Assim, o sistema fica mais organizado, mais fácil de manter e de ampliar. Se amanhã aparecer pagamento por carteira digital, você adiciona uma nova estratégia sem sair remendando o código todo. Em concursos, essa é a pista de ouro: “mesma finalidade, variações de forma de execução”. Os demais padrões não encaixam tão bem. State trata de mudança de comportamento conforme o estado interno do objeto, Interpreter de interpretação de linguagem/regras, Prototype de clonagem de objetos e Memento de salvamento/restauração de estado. Ou seja, eles têm outras missões no filme. Em doutrina de orientação a objetos, Strategy é justamente o padrão de projeto comportamental usado para permitir a escolha entre algoritmos relacionados. A FGV adora esse tipo de descrição funcional, trocando o nome do padrão por uma situação prática do dia a dia. Aqui, pagamento com meios diferentes, mas com a mesma finalidade, é Strategy na veia.