Chain of responsibility de forma rápida

Fala galerinhaaa, nesse quarto post da série “De forma rápida” vamos entender um pouco mais sobre o nosso querido Chain of responsibility.
🧐 O que é ?
Chain of responsibility, que em português, significa cadeia de responsabilidade, é um padrão de projeto comportamental onde permite que você possa passar um dado por vários processos comportamentais, sendo assim, cabe a cada uma de suas funções e/ou condições decidir se ela será processada ou passará adiante.
🤓 Entendendo um pouco melhor!
Vamos pensar no seguinte exemplo:
➞ Numa empresa temos 3 cargos para aprovação de um orçamento, cujo eles são supervisor, gerente e diretor, cada cargo com seu limite de valor para aprovação.
➞ O cargo de supervisor pode aprovar um orçamento de R$ 0,00 até R$ 9.999,99.
➞ O cargo de gerente pode aprovar um orçamento de R$ 10.000,00 até R$ 14.999,99.
➞ O cargo de diretor pode aprovar um orçamento de R$ 15.000,00 ou mais.
const orcamento = 12500
const aprovarOrcamento = {
supervisor: function (orcamento) {
if (orcamento >= 0 && orcamento < 10000) {
console.log('Supervisor aprovou o orçamento de R$', orcamento)
}
return this
},
gerente: function (orcamento) {
if (orcamento >= 10000 && orcamento < 15000) {
console.log('Gerente aprovou o orçamento de R$ ', orcamento)
}
return this
},
diretor: function (orcamento) {
if (orcamento >= 15000) {
console.log('Diretor aprovou o orçamento de R$', orcamento)
}
return this
}
}
aprovarOrcamento
.supervisor(orcamento)
.gerente(orcamento)
.diretor(orcamento)
😉 Prós e contras
✔️ Você pode controlar a ordem das condições.
✔️ Você pode introduzir novas condições sem quebrar o código.
❌ As vezes pode passar por todos os processos e acabar sem nenhum tratamento.
🔗 Referências
Você pode estudar um pouco mais do assunto nos links: 🎓
- https://brizeno.wordpress.com/category/padroes-de-projeto/chain-of-responsibility/
- https://www.dofactory.com/javascript/design-patterns/chain-of-responsibility
- https://www.joezimjs.com/javascript/javascript-design-patterns-chain-of-responsibility/
Programador: “É simples, pode ser composto. Se firma no concreto e torna-se, abstrato".
comments powered by DisqusWilliam Koerich.