William Koerich
1/3/2021 William Koerich

Chain of responsibility de forma rápida

blog-feature-image

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: 🎓


Programador: “É simples, pode ser composto. Se firma no concreto e torna-se, abstrato".

William Koerich.

comments powered by Disqus

NOS ACOMPANHE NAS REDES SOCIAIS