1
resposta

[Dúvida] A classe ReajusteService usa o pattern chain of responsibility?

O método reajusteSalarioDoFuncionario utiliza esse padrão? Pelo que entendi ele meio que faz uma "corrente" com todas as validações e me parece com esse design. Alguém consegue confirmar, pfv?

OBS: Estou aprendendo sobre padrão de projetos hehe.

1 resposta

Olá, Douglas!

Pelo que entendi da sua pergunta, você está se perguntando se o método reajusteSalarioDoFuncionario da classe ReajusteService está utilizando o padrão de projeto Chain of Responsibility, correto?

O padrão Chain of Responsibility é um padrão de projeto comportamental que permite passar solicitações ao longo de uma cadeia de handlers. Ao receber uma solicitação, cada handler decide se processa a solicitação ou a passa adiante ao longo da cadeia.

No caso do método reajusteSalarioDoFuncionario, ele não está exatamente utilizando o padrão Chain of Responsibility. O que acontece é que ele está chamando uma série de validações (que são implementações da interface ValidacaoReajuste) antes de realizar o reajuste do salário. Isso pode lembrar o Chain of Responsibility, mas não é exatamente o mesmo.

No Chain of Responsibility, cada handler decide se deve processar a solicitação ou passá-la adiante. No caso do reajusteSalarioDoFuncionario, todas as validações são sempre executadas, e se qualquer uma delas falhar, uma exceção é lançada.

Por exemplo, se tivéssemos um Chain of Responsibility, poderíamos ter uma situação onde a primeira validação passa e decide não passar a solicitação adiante, terminando a cadeia. No caso do reajusteSalarioDoFuncionario, mesmo que a primeira validação passe, as outras validações ainda serão executadas.

Então, embora haja alguma semelhança na ideia de ter uma série de validações, não é exatamente um Chain of Responsibility.

Espero ter ajudado e bons estudos!