Alternativa D - Strategy
O padrão Strategy tem como principal objetivo encapsular uma família de algoritmos, comportamentos ou estratégias, tornando-os intercambiáveis dentro do mesmo contexto.
Análise Detalhada
O enunciado descreve exatamente a definição clássica deste padrão de projeto:
- Encapsulamento: Cada algoritmo é encapsulado em sua própria classe (chamada de Strategy).
- Família de Algoritmos: Existem várias versões da mesma funcionalidade (ex: cálculo de frete via Correios, Jadlog, FedEx).
- Intercambiabilidade: O objeto cliente pode trocar a estratégia usada em tempo de execução sem precisar ser alterado.
Por que as outras alternativas não se encaixam?
| Alternativa | Função Principal | Por que não é a resposta? |
|---|
| Factory Method | Criação de objetos | Foca em instanciar objetos, não em escolher entre algoritmos existentes. |
| Facade | Interface simplificada | Oferece uma interface única para um sistema complexo, não varia o comportamento interno. |
| Adapter | Compatibilização de interfaces | Permite que interfaces incompatíveis trabalhem juntas, não escolhe entre algoritmos. |
| Template Method | Estrutura de algoritmo | Define o esqueleto de um algoritmo, onde subclasses redefinem partes específicas. |
Conclusão
O padrão Strategy permite que o código seja mais flexível e extensível, seguindo o princípio de programação contra abstração (programar para interfaces). Ao encapsular os algoritmos, você evita o uso excessivo de condicionais (if/else ou switch) para decidir qual lógica executar.