Viviane Santos França
Mulheres de Produto
2 min readMay 24, 2018

--

O que é Strategy Pattern e quando usar?

Escrevi uns dias atrás um artigo falando sobre design patterns e seus tipos. Hoje vamos falar de Strategy Pattern do tipo Behavioral Patterns, que explora a forma como os objetos interagem e dividem responsabilidades entre si.

Vamos pensar em uma classe responsável por calcular o tempo que uma pessoa demorará para chegar a determinada distância dependendo do transporte utilizado.

https://gist.github.com/vivifranca/be8c4b8eb8a1d64b51c6ef512003d3e0

Podemos perceber que teremos um if para cada tipo de transporte disponível e códigos com muitos ifs tendem a crescer e ficam muito complicados de entender.

Para deixar esse código mais legível o ideal seria:

https://sourcemaking.com/design_patterns/strategy
  • TransportationToAirport: será responsável por chamar qual meio de transporte for necessário sem conhecer a velocidade de cada transporte.
  • Strategy: é uma interface onde será definido um “contrato” para todos os transportes
  • Cada transporte implementará a interface “Strategy” e neste conterá a informações da sua velocidade.

Então o nosso código ficará assim:

O Strategy Pattern se propõe a resolver problemas exatamente como este, ou seja, permite que o algoritmo varie independentemente de quem o utilizará. Se precisarmos adicionar mais um meio de transporte não precisaremos mais criar ifs, apenas uma classe para esse novo meio, deixando o código mais limpo e com menos acoplamento.

No exemplo acima podemos encontrar códigos repetidos, que poderiam ser resolvidos com outro design pattern (template method pattern), mas vamos tratar este em outro artigo, aguarde :)

--

--