Post

Chain of Responsibility

In Design Patterns on marzo 18, 2010 by poyblog Messo il tag: ,

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

Una Risposta a “Chain of Responsibility”

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

Lascia un Commento

Fill in your details below or click an icon to log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Log Out / Modifica )

Foto Twitter

You are commenting using your Twitter account. Log Out / Modifica )

Foto di Facebook

You are commenting using your Facebook account. Log Out / Modifica )

Connecting to %s

Iscriviti

Get every new post delivered to your Inbox.