Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Identificação e utilização do Padrão Strategy

Olá a todos, estou estudando os padrões e comparando com casos reais que tenho em mãos. Me deparo muito com códigos assim:

 classe Qualquer
           ...
         MetodoQualquer()
             ...
             dadoEvento = retornaDados(baseadoEmAlgumParametro);
             classeEvento = new Evento(configDoEventoDeAlgumLugar);
             classeEvento->disparaEvento(dadoEvento)
             ...
class Evento
        disaparaEvento(dadoEvento)
           SE(dadoEvento.TIPO == '1')
                 SE(dadoEvento.OUTROTIPO == 'A')
                     facaAlgoEmAlgumLugar1(dadoEvento);
                  SE ENTAO(dadoEvento.OUTROTIPO == 'B')
                     facaAlgoEmAlgumLugar2(dadoEvento);
                  SENAO
                     facaAlgoEmAlgumLugar3(dadoEvento);
            SENAO
                facaAlgoEmAlgumLugar4(dadoEvento);

Vendo o padrão Strategy, pensei: "Fácil! Posso diminuir esses Ifs de acordo com o Strategy. Basta eu construir o objeto e passar para ele disparar de acordo com seu tipo". Assim:

class Evento
    disparaEvento(InterfaceTipoDoEvento TipoDoEvento)
        TipoDoEvento->facaAlgoNaMinhaClasseConcreta();

Mas, neste ponto, apareceu minha dúvida ou o ponto onde não consigo enxergar: Neste caso, como é possível construir TipoDoEvento sem ter que fazer IFs baseado nos dados da variável dadoEvento construída no MetodoQualquer? O Strategy realmente se encaixa para resolver problemas assim?

2 respostas
solução!

Boa noite Mauricio, na minha concepção o padrão Strategy não se encaixaria para o contexto de Evento, pois como você ta fazendo uma verificação onde você pode gerar varias opções, no caso uma reponsabilidade em cadeia o ideal seria o Chain of Responsibility, pois ele é parecido com o Strategy, porém a diferença é que ele é usando quando você precisa fazer uma verificação em cadeia. O padrão Chain of Responsibility é ensinado após o Strategy.

Obrigado Guilherme pela resposta. Realmente o Strategy não é a melhor solução para estes tipos de encadeamos de Ifs igual mostrado no exemplo. Vou continuar estudando os demais padrões para entender melhor as situações.