UGIdotNET Home UGIdotNET Home
UGIdotNET Blogs UGIdotNET Blogs
UGIdotNET Forum UGIdotNET Forum
MSDN Architetti MSDN Architetti
Visualizza Modifiche Visualizza Modifiche
Modifica Modifica
Stampa Stampa
Modifiche Recenti Modifiche Recenti
Sottoscrizioni Sottoscrizioni
Ufficio Oggetti Smarriti Ufficio Oggetti Smarriti
Cerca Riferimenti Cerca Riferimenti
Rinomina Rinomina
Cerca

Versioni

10/02/2008 13.10.08
-89.97.35.71
04/09/2007 23.15.31
-88.149.170.136
08/05/2007 13.17.08
LucaMinudel-193.42.138.35
08/05/2007 12.06.34
-65.162.56.77
05/05/2006 13.56.13
LucaMinudel-81.174.19.24
Elenco completo versioni Elenco completo versioni
Pattern Facade
.
Summary Un design pattern che definisce un'interfaccia unificata attraverso cui accedere all'intero sotto-sistema.

Conosciuto anche come

No ha altri nomi.

Intento

Il design pattern Facade definisce un'iterfaccia unificata (Facade) di più alto livello attraverso cui accedere al sotto-sistema e alle sue varie interfaccie rendendolo più semplice da usare..

La classe Facade definisce l'interfaccia istanzia ed accede a run-time agli oggetti del sotto-sistema di cui espone le funzionalità quindi questo design pattern è classificato rispetto allo scopo (vedi ClassificazioneDeiDesignPattern#ClassiOggetti) come rivolto agli oggetti. Rispetto al fine questo questo design pattern è classificato tra i ClassificazioneDeiDesignPattern#Strutturali .

Diagramma UML

Un'altro diagramma equivalente qui e qui .

Motivazione

Un sotto-sistema con molte classi e funzionalità è difficile da capire ed usare. Il design pattern Facade fornisce una interfaccia semplificata per accedere alle funzioni del sistema. Il design pattern Facade può fornire anche 2 o più interfacce destinate a diversi utilizzatori. Quando l'obiettivo principale è quello di semplificare e velocizzare l'uso del sistema, le interfacce e le classi interne del sotto-sistema restano accessibili e possono essere usate in combinazione col Facade.

Quando le classi di un sotto-sistema sono usate da diverse classi esterne al sotto-sistema

l'evoluzione del sotto-sistema è più difficile. Il design pattern Facade favorisce il disaccoppiamento tra il sotto-sistema ed i suoi utilizzatori

semplificando l'evoluzione del sotto-sistema. In questo caso le interfaccie e le classi interne del sotto-sistema saranno private ossia inaccesibili all'esterno.

Esempi d'uso in .NET

In .NET l'assembly mscoree.dll è il Facade del CLR attraverso cui sono esposte le funzioni fornite dalle DLL Win32 e COM, da mscorewks.dll (la build monoprocessore) e mscorsvr.dll (la build multiprocessore ).

Note sulla implementazione in .NET

In .NET il livello di granularità di un sotto-sistema è un assembly (non è possibile rendere private classi rispetto ad un namespace ma solo rispetto ad un assembly).

Del codice .NET di esempio è disponibile qui .

Relazione con altri design pattern

Solitamente è necessaria una sola istanza di Facade, quindi può essere realizzato come una classe statica oppure applicando il PatternSingleton.

Vedi la mappa della RelazioneTraDesignPattern.

Approfondimenti

Il design pattern Facade è usato anche quando si vuole strutturare il sistema a livelli o layer (per esempio data layer, business layer, process layer, etc.).

In sistemi software di grandi dimensioni ridurre le dipendenze di compilazione è vitale e il design pattern Facade raggiunge questo scopo.

Domande di approfondimento

  • Quanto complesso deve essere un sottosistema per giustificare l'uso di un Facade?
  • Quali similitudini ci sono tra il design pattern Facade e il PatternMediator? E quali differenze?
  • Che vantaggi da usare un PatternAbstractFactory per istanziare un Facade?

Link

VediAnche CatalogoDeiDesignPattern

UGIdotNETWiki

UGIdotNETWiki è il WikiWiki italiano dedicato a .NET

Se è la prima volta che senti parlare di Wiki, leggi il BenvenutoAiVisitatori e WikiInUnMinuto, oppure il ManualePassoPassoDelWiki.

Argomenti Recenti

  • PatternFacade
© 2008 User Group Italiano UGIdotNET. Tutti i diritti riservati. Note legali