Oi Eliakin!
Sim, mas não como você esta pensando. Vamos lá...
Eu tenho a classe A que aceita uma estratégia. Ela é usada pelas classes W, X, Y. Se eu colocar um IF dentro de A e as classes W, X, Y passarem uma string para escolherem que estratégia utilizar, matou o estrategy! Porque eu tenho que alterar a classe A e adicionar um IF para atender W,X,Y. Se uma nova classe aparecer, por exemplo, Z.. eu terei que colocar mais um IF em A! Veja que para cada cliente eu terei que alterar A!
Agora, se W vai usar essa ou aquela estratégia, é W tem deve decidir...fazendo IF ou não, que isso não terá impacto em A. Aliás, como A é usada em vários lugares, não há o risco de adicionar um efeito colateral nela, a não ser no próprio W.. se passar a estratégia errada ou tiver algum erro. A mesma coisa de Y... se ela precisar escolher entre 3 estratégias para passar para A.. esse código com IF ou seja lá o que for ficará apenas em Y... e como não alterada A, não corre o risco de quebrar A que por conseguinte não corre risco de quebrar tocas as outras classes que fazem uso dela.
Uma estrutura de decisão para decidir qual estratégia será passada para A vai sempre existir, o importante é que nunca seja em A. A só recebe a estratégia,