In computer programming, chain-of-responsibility pattern is one of design patternss where command objects are coming from somewhere, processing logic is spread between a number of objects and the commands are distributed.

Each object is smart enough to know wither it can handle something, how to pass it off, and how to add to the end of the chain.

Permutations: Commands may be sent in alternate directions out, forming a tree of responsibility. Recursion could continue until the command is processed, or the entire tree has been explored.

An XML interpreter (parsed, but not yet executed) example might be fitting.

This pattern promotes the idea of loose coupling, a programming practice.

The article is originally from Perl Design Patterns Book