O padrão Strategy define uma família de algoritmos/comportamentos intercambiáveis, encapsula cada um, e os torna permutáveis em tempo de execução. Permite que você selecione um algoritmo dinamicamente e evite condicionais complexas, promovendo código flexível e extensível.
O que o padrão Strategy faz
STRATEGY → encapsulate INTERCHANGEABLE algorithms/behaviors behind a common interface:
→ define a family of strategies (each implements the same interface)
→ the context uses a strategy via the interface → can SWAP strategies at runtime
→ choose the behavior dynamically without changing the context
→ "compose" behavior instead of hardcoding it (favor composition over conditionals)
