Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] O padrão Chain of Responsibility pode gerar uma complexidade?

Compreendo que o padrão de projetos Chain of Responsibility seja uma solução mais que útil para alguns cenário, mas é possível que a utilizar-lo pode haver um alto acoplamento entre os handlers da cadeia? Além disso, no exemplo da CalculadoraDeDescontos, o método calcular(Orcamento obj) não irá crescer da mesma formar? uma vez que tenho que instanciar as classes concretas toda vez que for adicionado uma nova regra de descontos, assim ferindo o Princípio Aberto-Fechado??

1 resposta
solução!

Pedro, bom dia.

Não sou o instrutor, mas vou tentar te ajudar. O pattern Chain Of Responsibility normalmente vão ter um alto acoplamento com a classe abstrata/interface, ou seja, se alterar alguma coisa lá como nome de metodo ou inserir alguma nova funcionalidade, a mesma deverá ser implementada nas outras classes que herdam dela. Porem se você alterar alguma regra de negôcio dentro de cada classe que herda da classe abstrata, não irá impactar nada em seu codigo.

Agora sobre instanciar as classes, em todo quanto e lugar da programação você nunca irá ganhar 100%. Voltando ao inicio do projeto nos tinhamos diversos if's o que era muito verboso e dificil a manutenção conforme o crescimento do projeto. Quando você instancia as classes dentro da variavel, fica facil a manutenção e a legibilidade, ela vai crescer? Sim vai crescer conforme a sua regra de negôcio, porem muito mais facil a manutenção sendo apenas retirar uma classe que está sendo instanciada ficando com muito menos chance de essa alteração que você fizer quebrar o codigo.

Enfim, meu ponto de vista é que você nunca irá ganhar 100% alguma coisa sempre vai deixar a desejar. Mas é muito melhor do que fazer um monte if/else.