1
resposta

Posso considerar essa resposta válida para conceituar e diferenciar padrões Strategy de Chain of Responsability?

Strategy é um padrão de design comportamental que permite definir uma família de algoritmos, colocar cada um deles em uma classe separada e tornar seus objetos intercambiáveis, visando diminuir o acoplamento entre classes bases de classes derivadas. Com ele podemos trocar algoritmos usados dentro de um objeto em tempo de execução, isolar os detalhes de implementação de um algoritmo do código que o utiliza, substituir herança por composição e introduzir novas estratégias sem precisar alterar o contexto. Mas, uma desvantagem seria complicar demais o programa com novas classes e interfaces que acompanham o padrão, se sua aplicação possuir poucos algoritmos.

Chain of Responsability também é um padrão de design comportamental, mas que permite passar solicitações ao longo de uma cadeia de manipuladores permitindo ao evento gerado por um objeto ser tratado por outro visando controlar a ordem de tratamento de solicitações, desacoplar classes que invocam operações de classes que executam operações ou mesmo, introduzir novos manipuladores no aplicativo sem quebrar o código do cliente existente. O inconveniente é que alguns pedidos podem acabar sem tratamento.

1 resposta

Olá, tudo bem?

Peço desculpas pela demora no retorno.

A definição apresentada é válida sim.

O padrão do tipo Strategy trabalha com o encapsulamento dos algoritmos em uma classe ou função específica, um padrão do tipo Strategy não possui conhecimento de outros padrões Strategy.

No padrão Chain of Responsability também trabalhamos com o encapsulamento dos algoritmos em uma classe, porém diferente do padrão Strategy nesse padrão cada classe possui a responsabilidade de saber qual será a próxima classe a ser chamada; as classes são responsáveis por dar seguimento ou não à cadeia de eventos. Podemos também possuir múltiplas cadeias de eventos sem que seja necessário acrescentarmos novas classes, bastando realizar reordenação das chamadas das classes.

Fico à disposição em caso de dúvidas.

Abraços e bons estudos.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software