I **Design Patterns (DP)** sono esperienze registrate nella progettazione di software orientato agli oggetti. Ogni **DP nomina, spiega e valuta sistematicamente un progetto importante e ricorrente** nei sistemi orientati agli oggetti. ## Elementi essenziali Il **nome del modello** è usato per descrivere un problema di progettazione, le sue soluzioni e conseguenze. Il **problema** descrive quando applicare il motivo e spiega il problema e il suo contesto. La **soluzione** descrive gli elementi che compongono il progetto, le loro relazioni, responsabilità e collaborazioni e fornisce una descrizione astratta indipendente da un particolare progetto o implementazione concreta. Le **conseguenze** sono i risultati e i compromessi dell'applicazione del modello, spesso riguardano compromessi spazio-temporali, può affrontare il linguaggio e l'implementazione e include il suo impatto sulla flessibilità, estensibilità o portabilità di un sistema. ## Come selezionare un DP? - Considera come i modelli di progettazione risolvono i problemi di progettazione. - Studia come i modelli interagiscono. - Studia modelli con lo stesso scopo. - Esaminare una causa di riprogettazione. - Considera cosa dovrebbe essere variabile nel tuo progetto. I modelli più comuni sono: - Abstract Factory - Adapter - Composite - Decorator - Factory Method (metodo fabbrica) - Observer - Strategy - Template Method ## Classificazione - **Tipologia di soluzione utilizzata:** - *Creational:* sulla creazione di oggetti; - *Structural:* sulla composizione di classi o oggetti; - *Behavioral:* sull'interazione e la distribuzione delle responsabilità. - **Scopo:** il modello si applica principalmente a classi oppure oggetti;