2
respostas

Decorator - exemplo dos impostos

Fiquei com a impressão de que a implementação do Decorator no exemplo dos impostos, passando outro imposto como parâmetro e chamando o seu cálculo a partir do método calcula, ficou muito muito parecido com um Chain of Responsibility.

A única diferença é o fato de que no Decorator vou necessariamente chamar todas as classes envolvidas, e no ChainoR não. Estou correto?

2 respostas

No Chain of Responsability, ele vai percorrer as funções até encontrar aquela que "sabe" resolver/atender a chamada. No caso do Decorator, esse cálculo é "aditivo", ou seja, toda as funções serão chamadas.

Oi Marcel a implementação pode até ter ficado parecido pra você mas o propósito dos padrões são diferentes um é estrutural e outro comportamental, além disso o Decorator trata de extensão de funcionalidades enquanto o chain define uma cadeia de objetos que tratam uma solicitação, o Decorator é transparente já o Chain o cliente não sabe quem vai atender a solicitação. No Decorator não necessariamente você vai chamar todas as classes envolvidas você pode compor os objetos em tempo de execução estendendo a funcionalidade deles, inclusive retirar uma regra anterior, já no chain onde você disse que não chamaria, você deve montar a cadeia interligando toda a cadeia você pode até mudar a ordem da cadeia mas não faz sentido ter uma responsabilidade que não vá participar da cadeia.

Espero ter ajudado e bons estudos.