Versioni
| Conosciuto anche comeNo ha altri nomi. IntentoIl 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 . MotivazioneUn 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 .NETIn .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 .NETIn .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 patternSolitamente è necessaria una sola istanza di Facade, quindi può essere realizzato come una classe statica oppure applicando il PatternSingleton. Vedi la mappa della RelazioneTraDesignPattern. ApprofondimentiIl 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
Link | UGIdotNETWikiUGIdotNETWiki è 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 | ||||||||||||||||||||||||||||||||||||||
| © 2008 User Group Italiano UGIdotNET. Tutti i diritti riservati. Note legali | ||||||||||||||||||||||||||||||||||||||||