4 pagine in totale: <<Indietro 1 2 3 [4]
L'esempio di codice che segue dimostra come il pattern Provider sia una variante del pattern Strategy. Tuttavia nel caso dello Strategy è necessario indicare in modo esplicito il tipo di strategia da utilizzare all'atto della costruzione dell'oggetto Context. Grazie all'operazione di inizializzazione, durante la quale in modo del tutto trasparente viene recuperata la configurazione e attivata l'istanza, col pattern Provider non è più necessario specificare alla classe Manager il tipo da caricare, in quanto la dipendenza viene "iniettata" a runtime.
public abstract class AbstractProvider
{
public abstract void DoSomething();
}
public class ConcreteProvider : AbstractProvider
{
public override void DoSomething()
{
// Stub...
}
}
public static class Manager
{
private static AbstractProvider _provider;
private static bool _initialized;
private static object _lock;
public static AbstractProvider Provider
{
get
{
Manager.Initialize();
return Manager._provider;
}
}
static Manager()
{
Manager._initialized = false;
Manager._lock = new object();
}
private static void Initialize()
{
if(!Manager._initialized)
{
lock(Manager._lock)
{
// Recupera la configurazione
// Crea l'istanza di ConcreteProvider
// Assegna l'istanza creata a _provider
Manager._initialized = true;
}
}
}
public static void DoSomething()
{
Manager.Provider.DoSomething();
}
}
class ClientApp
{
[STAThread]
static void Main()
{
Manager.DoSomething();
}
}
Conclusioni
In questo articolo abbiamo visto i concetti generali che stanno alla base del Provider Model e ne abbiamo capito le motivazioni. In particolare abbiamo visto come il pattern Provider suggerisca una valida soluzione per migliorare il disegno delle applicazioni in termini di flessibilità ed estendibilità. Del resto i pattern sono utili proprio perchè permettono a sviluppatori e architetti di risolvere problematiche di sviluppo e progettazione note sfruttando soluzioni eleganti e collaudate. I Provider rappresentano una di queste soluzioni, in particolare nel caso in cui si voglia creare layer applicativi pluggabili e intercambiabili. In ogni caso è bene tenere a mente che, nonostante la loro utilità, i pattern non rappresentano sempre la soluzione ad ogni problema, ma vanno utilizzati con cognizione di causa e attenzione. La valutazione sul loro uso spesso dipende dal tipo di applicazione, dalla sua dimensione e dalla sua complessità. L'esperienza e il buon senso permettono in molti casi di fare la scelta giusta.
ASP.NET 2.0 sfrutta abbondantemente il pattern Provider per garantire l'estendibilità delle sue principali API. Nel prossimo articolo parleremo di alcuni dei Provider di ASP.NET 2.0, elencandone le caratteristiche principali e gli aspetti peculiari da un punto di vista architetturale.
4 pagine in totale: <<Indietro 1 2 3 [4]
Contenuti dell'articolo
- Galleria fotografica dinamica con ASP.NET AJAX
- Usare Search come un servizio nei tuoi siti e nei tuoi client
- Mappe nel tuo sito con Virtual Earth
- Integrare Windows Live ID, Contacts e Presence API nelle tue applicazioni
- Introduzione ai cloud based service con Windows Live Services
- Realizzare un custom extender AJAX con ASP.NET 3.5
- Tracciare le modifiche ai dati e allineare i datawarehouse con il Change Data Capture in SQL Server 2008
- Le nuove caratteristiche di IIS 7.0 per sviluppatori e sistemisti
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.





Difficoltà
Utilità
Stampa
Download 


10annidi.ASPItalia.com: iscriviti alla competizione e vinci fantastici premi ogni mese!