Implementation

There are many ways to implement a Chain of Responsibility in Python, but my favorite implementation is the one by Vespe Savikko (https://legacy.python.org/workshops/1997-10/proceedings/savikko.html). Vespe's implementation uses dynamic dispatching in a Pythonic style to handle requests (http://j.mp/ddispatch).

Let's implement a simple, event-based system using Vespe's implementation as a guide. The following is the UML class diagram of the system:

The Event class describes an event. We'll keep it simple, so in our case, an event has only a name:

class Event:     def __init__(self, name):         self.name = name      def __str__(self): return ...

Get Mastering Python Design Patterns - Second Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.