I Design Pattern sono soluzioni tecniche a problemi comuni di progettazione del software. Essi rappresentano schemi logici di risoluzione di un problema riusabili e indipendenti dal linguaggio di programmazione ed offrono un modello di riferimento per la realizzazione di componenti software facilmente manutenibili.
Naturalmente i Design Pattern non garantiscono la soluzione ad un problema, ma sono modelli progettuali di riferimento a cui ispirarsi quando si individua un determinato problema con certe caratteristiche. È possible che, scrivendo del codice, abbiamo già utilizzato un pattern senza rendercene conto, ma se abbiamo dubbi su qual è il modo migliore per affrontare un dato problema progettuale, i Design Pattern possono darci una mano.
In questa sezione analizzeremo alcuni dei più comuni Design Pattern proponendo delle implementazioni in JavaScript.
Tradizionalmente i Design Pattern vengono raggruppati in categorie per evidenziarne l'obiettivo principale su cui sono focalizzati. In particolare, possiamo raggrupparli in tre categorie:
Pattern creazionali
Questo tipo di pattern si occupa della creazione di classi e oggetti; anche se a prima vista può sembrare un problema banale, in applicazioni complesse può risultare utile controllare il modo in cui vengono creati gli oggetti.
Tra i pattern che fanno parte di questa categoria analizzeremo:
- Singleton Pattern
- Factory Pattern
Pattern strutturali
L'obiettivo dei pattern strutturali è di fornire un modo per gestire le relazioni tra gli oggetti, per rendere scalabile l'architettura di un'applicazione, cioè perché variazioni in una parte dell'applicazione abbiano un impatto minimo nelle altri parti.
Analizzeremo per questa categoria:
- Module Pattern
- Adapter Pattern
- Façade Pattern
- MVC/MVVM Pattern
Pattern comportamentali
Il focus di questo tipo di pattern è sulla comunicazione tra gli oggetti di un'applicazione.
Tra i pattern di questa categoria vedremo solo:
- Observer Pattern
Altri pattern
Oltre ai più classici pattern individuati dalla Gang Of Four (GOF) si sono affermati pattern utili alla gestione e alla manutenzione del codice. A questo proposito esamineremo un pattern utile a manipolare con semplicità la programmazione asincrona e le callback annidate:
- Promise Pattern
Link utili