Eine Chain of Responsibility wird verwendet, wenn nicht eindeutig ist, welches Objekt eine Nachricht verarbeiten soll. Der Auslöser und der Verarbeiter einer Nachricht werden dabei entkoppelt. Es wird dabei eine Kette von Objekten durchlaufen, welche die Nachricht verarbeiten könnten. Die Nachricht wird solange weitergereicht, bis ein Objekt diese verarbeitet hat oder das Ende der Kette erreicht ist.