Molto spesso i problemi incontrati nello sviluppo di grossi progetti software sono ricorrenti e molto prevedibili.
I design pattern sono "schemi di soluzioni" riutilizzabili, introdotti dall'architetto Christopher Alexander.
Cit: "Ogni pattern descrive un problema che si presenta frequentemente nel nostro ambiente, e quindi descrive il nucleo della soluzione così che si possa impiegare tale soluzione milioni di volte, senza produrre due volte la stessa realizzazione"
Per noi il principio è ugualmente valido, anche se riferito al mondo dello sviluppo sw.
Forniscono:
Permettono quindi di non inventare da capo soluzioni a problemi già risolti, ma di utilizzare dei "mattoni" di provata efficacia, fornendo quindi un vocabolario comune che facilita la comunicazione tra progettisti.
Possono rendere la struttura del progetto/codice più complessa del necessario, infatti di volta in volta bisogna decidere se adottare semplici soluzioni ad-hoc o riutilizzare pattern noti
"When in doubt, leave it out"
"Keep it simple"
Definizione: descrizione di oggetti e classi comunicanti adattabili per risolvere un problema ricorrente di progettazione in un contesto specifico