Padrões de projeto em Python

Chain of Responsibility Pattern in Python

Aprenda Chain of Responsibility Pattern in Python com um exemplo prático que pode editar e executar online.

O que é Chain of Responsibility Pattern?

Aprenda Chain of Responsibility Pattern in Python com um exemplo prático que pode editar e executar online.

Quando usar?

  • Resolver problemas recorrentes de design de objetos com estruturas comprovadas.
  • Desacoplar responsabilidades para facilitar a extensão e os testes do código.
  • Usar um vocabulário de design comum ao discutir arquitetura com a equipe.

Código de exemplo

Executar código →
main.py
class Approver:
    # Chain of Responsibility: offer a request to handlers in order.
    def __init__(self, name, limit, next_approver=None):
        self.name, self.limit, self.next = name, limit, next_approver

    def approve(self, amount):
        # Handle locally or pass the request along the chain.
        if amount <= self.limit:
            return f"{self.name} approved {amount}"
        if self.next:
            return self.next.approve(amount)
        return "Declined"


chain = Approver("Lead", 100, Approver("Manager", 1000))
print(chain.approve(500))

Saída esperada

Manager approved 500

Como funciona

Este exemplo demonstra Chain of Responsibility Pattern in Python. Altere os valores de entrada para explorar o código.

Altere os valores e execute o programa no compilador Python online CodeUtility sem instalar Python.

Exercícios práticos

Altere as entradas e teste casos de borda antes de usar conjuntos de dados maiores.

  1. Substitua o domínio do exemplo preservando a estrutura do padrão.
  2. Compare o padrão com uma implementação mais simples e explique as diferenças.
  3. Escreva testes para cada participante antes de adicionar outra implementação.
Executar no IDE Python →