Patrones de diseño en Python

Chain of Responsibility Pattern in Python

Aprende Chain of Responsibility Pattern in Python con un ejemplo práctico que puedes editar y ejecutar online.

¿Qué es Chain of Responsibility Pattern?

Aprende Chain of Responsibility Pattern in Python con un ejemplo práctico que puedes editar y ejecutar online.

¿Cuándo se utiliza?

  • Resolver problemas recurrentes de diseño de objetos con estructuras probadas.
  • Desacoplar responsabilidades para facilitar la extensión y las pruebas del código.
  • Usar un vocabulario de diseño común al hablar de arquitectura con el equipo.

Código de ejemplo

Ejecutar 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))

Resultado esperado

Manager approved 500

Cómo funciona

Este ejemplo muestra Chain of Responsibility Pattern in Python. Cambia los valores de entrada para explorar el código.

Cambia los valores y ejecuta el programa en el compilador Python online de CodeUtility sin instalar Python.

Ejercicios prácticos

Modifica las entradas y prueba casos límite antes de usar conjuntos de datos mayores.

  1. Sustituye el dominio del ejemplo conservando la estructura del patrón.
  2. Compara el patrón con una implementación más sencilla y explica las ventajas y desventajas.
  3. Escribe pruebas para cada participante antes de añadir otra implementación.
Ejecutar en el IDE de Python →