Salve pessoal, fiquei com um pouco de dúvida entre a diferença desses dois padrões (decorator e chain of responsability). Eles me pareceram exatamente a mesma coisa. Estou completamente errado? Um abraço.
Salve pessoal, fiquei com um pouco de dúvida entre a diferença desses dois padrões (decorator e chain of responsability). Eles me pareceram exatamente a mesma coisa. Estou completamente errado? Um abraço.
Oi Claudio,
Pense no Decorator como "adicionando" a alguma coisa, enquanto Chain of Responsiblity é mais como lidar com alguma coisa. Ao comparar os dois padrões a maior diferença é que o Chain of Responsiblity pode matar a cadeia em qualquer ponto. Pense nos Decorators como uma unidade em camadas na qual cada camada sempre faz o pré / pós processamento. Chain of Responsibility é mais como uma lista vinculada e, geralmente, 1 coisa lida com o processamento. O padrão Chain of Responsibility permite que várias coisas tratem de um evento, mas também lhes dá a oportunidade de encerrar a cadeia a qualquer momento.
Cenário: Pense em uma solicitação de serviço (normalmente acesso de administrador ao seu laptop), que precisa ser aprovada por seu gerente, diretor e vice-presidente. Nesse caso, o padrão Decorator atuaria como se em cada nível houvesse apenas comentários de cada um deles e, finalmente, você obteria uma saída. Então, o gerente diria 'Aprovado e encaminhado', diretor 'Ok, aprovado e encaminhado' e, finalmente, o VP 'Aprovado'. E seu resultado final seria a combinação de todos os 3 comentários.
Observação: a corrente não vai quebrar, não importa se sua solicitação foi aprovada ou Reprovada.
Na Cadeia de responsabilidades, em cada estágio a pessoa individual tem autoridade para aprovar ou rejeitar. E se em qualquer nível a solicitação for rejeitada, então sua solicitação não segue para o próximo nível, em vez disso, apenas termina com o resultado. Espero que isto ajude :)