Post

Facade

In Design Patterns on febbraio 12, 2010 by poyblog Messo il tag: ,

Intento:

Fornisce una interfaccia unica all’insieme di interfacce presenti in un sistema. Facade definisce una interfaccia di alto livello che genera un sistema più semplice da utilizzare.

Applicabilità:

E’ utile sfruttare questo pattern quando:

  • si vuole fornire una interfaccia semplice verso un sotto-sistema complesso, e di norma la maggior parte dei Client sfrutterà tale interfaccia senza addentrarsi nelle complessità del sotto-sistema, cosa che comunque rimane possibile
  • ci sono molte dipendenze fra i Client e le classi di implementazione dell’astrazione, l’utilizzo di Facade permette di disaccoppiare i sottositemi dai Client.
  • Si vuole creare dei livelli all’interno del sotto-sistema, Facade viene utilizzato per creare un punto di accesso ad ogni livello.

Partecipanti:

  • Facade → conosce quale Subsystem classe è responsabile delle richieste, delega le richieste dei Client al sotto-sistema appropriato
  • Subsystem classes → implementa le funzionalità di un sotto-sistema, gestisce il lavoro assegnato dall’oggetto Facade, non ha conoscenza di Facade, ciò significa che non ha riferimenti verso tale oggetto

Conseguenze:

  • Facade funge da schermo fra i Client e i componenti del sotto-sistema, riducendo il numero di oggetti con i quali i Client devono avere a che fare
  • Favorisce un basso livello di accoppiamento fra Client e sotto-sistema, questo permette di modificare i componenti di un sotto-sistema senza toccare i Client. Questa conseguenza è particolarmente utile per sistemi di grosse dimensioni e di alta complessità.
  • Facade non nega alla applicazioni di sfruttare le classi del sotto-sistema.

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.