Il pattern STRATEGY è un design pattern della famiglia GOF, utilizzato per selezionare un algoritmo al volo a runtime in base a determinate condizioni, un po' come succede per le strategie belliche durante un conflitto armato... :)
Il pattern è utile in quelle situazioni in cui sia necessario cambiare al volo un algoritmo utilizzato in una applicazione. Lo strategy si propone di fornire un modo per definire una famiglia di algoritmi, incapsulare ciascuno di essi in un oggetto e renderli intercambiabili tra di loro. Questo implica che ciascun algoritmo può variare indipendentemente dall'uso che ne viene fatto.
Con il discorso dei provider, questo pattern oggi è di gran moda. Viene solitamente impiegato insieme all'abstract factory per garantire l'indipendenza tra l'oggetto creato dal factory e il contesto di chiamata dell'oggetto stesso. Di fatto l'algoritmo di creazione di un oggetto cambia in base alla configurazione dell'applicazione. Un esempio che mi viene in mente su due piedi è quello del SqlClientFactory che implementa la classe astratta DBProviderFactory e che espone una serie di metodi di creazione che ritornano i tipi concreti relativi all'accesso a SQL Server.
Nella mia sessione al Real Code Day mostrerò questo pattern che nel caso specifico ho utilizzato per incapsulare la logica di accesso ai dati e per caricare il data mapper corrispondente all'entità in uso. In base al mapper caricato dal contesto di chiamata cambia il tipo di entità utilizzata e la modalità di accesso ai dati.
Per una visione dello schema delle classi del pattern si può consultare questo link:
http://www.dofactory.com/Patterns/PatternStrategy.aspx.
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
- La mia esperienza ai Community Days 2012, il 20 febbraio 2012 alle 11:20
- Real Code Day 6: slide e codice sorgente, il 22 maggio 2011 alle 20:30
- Slide e demo della mia sessione ai Community Days online, il 12 luglio 2008 alle 01:20
- MVP Summit 2008, il 22 aprile 2008 alle 14:00
- Real Code Launch 2008: demo online, il 18 marzo 2008 alle 11:15
- Real Code Launch 2008: vi aspettiamo là!, l'11 marzo 2008 alle 10:25