Chain-of-responsibility pattern
Il Chain of Responsability è un design pattern utilizzato nella programmazione ad oggetti e definito nel famoso libro della Gang of Four.
Scopo del pattern
Il pattern permette di separare gli oggetti che invocano richieste dagli oggetti che le gestiscono dando ad ognuno la possibilità di gestire queste richieste. Viene utilizzato il termine catena perché di fatto il la richiesta viene inviata e "segue la catena" di oggetti, passando da uno all'altro, finché non trova quello che la gestisce.
Applicabilità
Il pattern è comodo quando non conosciamo a priori quale oggetto è in grado di gestire una determinata richiesta, sia perché effettivamente è sconosciuto staticamente o sia perché l'insieme degli oggetti in grado di gestire richieste cambia dinamicamente a runtime.
Template

La struttura del pattern è piuttosto semplice, le componenti principali sono 2:
- Handler, che rappresenta l'interfaccia che offre il metodo HandleRequest che sarà il metodo utilizzato dalle componenti per inoltrare richieste all'oggetto contenuto;
- ConcreteHandler, che rappresenta l'effettiva implementazione della gestione degli eventi per un oggetto.
Ogni oggetto facente parte del template deve implementare il metodo HandleRequest che gestirà il tipo di richiesta ricevuta (se è lui che se ne deve occupare), altrimenti chiamerà lo stesso metodo sull'oggetto contenuto all'interno (ed è per questo che si viene a formare una catena, allo stesso modo del pattern decorator).