Como prever que devo usar o padrão de projeto Strategy?
Como prever que devo usar o padrão de projeto Strategy?
Bom Ricardo, não sei se existe uma frase que englobe o caso todo. Mas acredito que quando você ver/desenvolver aqueles 'ifzillas' possa ser uma oportunidade de aplicar o padrão. Devem existir n situações, mas uma que é comum no dia-a-dia é essa.
Oks obrigado
Ricardo, acredito que visualizar vários ifs é apenas um code smell
de que o design não foi bem pensando. É possível identificar a necessidade de aplicar o Strategy antes mesmo de chegar ao ponto de ver muitos ifs. Pelo que eu percebi, você precisa conhecer o domínio da sua aplicação e identificar se suas classes pertencem a um mesmo conceito mas possuem implementações diferentes da mesma estratégia.
Por exemplo, todo imposto é calculável e possui uma fórmula para obtenção do valor. Percebe-se que tanto ICMS, ISS, CONFINS, FGTS, etc tem uma fórmula embutida. E, percebe-se também, que você quer manipular esses objetos sem ficar verificando qual imposto você está trabalhando. Você deseja apenas obter o valor dele. Dessa forma, fica claro que eles compartilham uma interface.
Por fim, basta utilizar cada um chamando apensar um método que todos devem implementar! Assim, você não necessita ficar fazendo Ifs para fazer a conta para cada um pois cada objeto sabe a sua estratégia para executar.
Espero ter ajudado.