Intento:
Permette di agganciare il mittente di una richiesta con il ricevitore, lasciando la possibilità a più di un oggetto di gestire la richiesta. Una volta concatenati gli oggetti “ricettori” la richiesta viene passata attraverso la catena stessa fino a che un oggetto non la prende in carico.
Applicabilità:
Il pattern è da utilizzare quando:
- più di un oggetto è in grado di gestire una richiesta e non c’e nessun oggetto che possa gestire la richiesta a priori
- si vuole gestire una richiesta con uno dei molti oggetti presenti, senza indicare il ricevitore esplicitamente
- l’insieme di oggetti che possono gestire la richiesta dovrebbero essere specificati dinamicamente.
Partecipanti:
- Handler → definisce una interfaccia per gestire le richieste e può implementare la successione degli elementi nella catena
- ConcreteHandler → gestisce le richieste e ne è responsabile, è poi in grado di accedere al successore (altro elemento della catena). Se il ConcreteHandler può gestire la richiesta, questo può elaborarla oppure inviarla al successore
- Client → Inizializza la richiesta verso un oggetto di tipo ConcreteHamdler
Conseguenze:
Ecco i benefici e i vincoli che tale pattern comporta:
- Viene ridotto il livello di accoppiamento, dato che viene liberato ogni oggetto dalla necessità di conoscere tutti coloro che sono in grado di risolvere tale richiesta.
- Viene aggiunta flessibilità nella fase di assegnazione di responsabilità agli oggetti
- La ricezione e la gestione delle richieste non sono garantite










[...] Chain of Responsibility [...]