Design pattern
- forniscono schemi generali per la soluzione di problematiche ricorrenti che si incontrano durante lo sviluppo del software
- favoriscono il riutilizzo di tecniche di design di successo nello sviluppo di nuove soluzioni
- evitano al progettista di riscoprire ogni volta le stesse cose
- permettono di sviluppare un linguaggio comune che semplifica la comunicazione tra le persone coinvolte nello sviluppo del software
Definizione
Per definire un design pattern occorre specificare
- nome: consente un più elevato livello di astrazione nella fase di progettazione e facilita la comunicazione tra gli addetti ai lavori e la documentazione
- problema: descrive in quali contesti ha senso applicare il pattern
- soluzione: fornisce la descrizione astratta di un problema e indica come utilizzare gli strumenti a disposizione per risolverlo
- conseguenze: descrivono i risultati dell’applicazione del design pattern; sono fondamentali per valutare le diverse alternative e comprendere i costi e benefici risultanti dell’applicazione del pattern
Classificazione
- creazionali → riguardano il processo di creazione degli oggetti
- strutturali → riguardano la composizione di classi ed oggetti
- comportamentali → caratterizzano i modi in cui le classi e gli oggetti interagiscono tra di loro e si distribuiscono le responsabilità
Design pattern creazionali
- astraggono il processo di creazione
- aiutano a rendere il sistema indipendente da come i suoi oggetti sono creati, composti e rappresentati
I design pattern di questo tipo diventano sempre più utili man mano che il sistema diventa sempre più dipendente dalla composizione di oggetti
- l’enfasi si sposta dalla codifica di un insieme fissato di comportamenti alla definizione di un insieme più piccolo di comportamenti fondamentali che possono essere composti per dar vita a comportamenti più complessi