Skip to content.
Logo tecnoteca

Portale Tecnoteca.it

Logo tecnoteca

Vai al sito aziendale Tecnoteca.com


 
You are here: tecnoteca.it » Sezioni speciali » Ingegneria del software » Pattern » Tipi di Pattern » Design Patterns

Argomenti correlati:
  - Approfondimento
  - Libri

Design Patterns

I design patterns esprimono soluzioni a problemi che insorgono nel contesto di sottosistemi o componenti in un’applicazione software fornendo degli schemi in cui vengono individuate delle classi oppure oggetti e vengono dettagliate le relazioni che intercorrono tra loro. Descrivono, quindi, strutture comuni e ricorrenti di componenti comunicanti tra loro che risolvono un problema di design generico entro un particolare contesto.

Sono sicuramente i più conosciuti (e spesso chi parla di pattern si riferisce impropriamente ai design pattern) grazie alla popolarità del libro del GoF che ha avuto il merito di essere il primo a catalogare una serie di pattern in una forma chiara e precisa secondo un modello che assieme a quello utilizzato da C.Alexander (metodo alessandrino) rimangono i due standard di definizione di pattern.

I pattern presentati nel libro del GoF possono essere classificati in base a due criteri. Il primo definito scopo indica cosa fa un pattern: pertanto avremo pattern creazionali (si occupano del processo di creazione di un oggetto), strutturali (circa la composizione di classi oppure oggetti) e comportamentali (specificano le modalità in cui le classi o oggetti interagiscono fra loro attribuendo le responsabilità).
Il secondo criterio, definita come applicabilità, specifica se i pattern vengono applicati su classi oppure oggetti. I pattern sulle classi stabiliscono le relazioni tra le diverse classi attraverso il meccanismo dell’ereditarietà, perciò sono statici perché fissati in fase di compiling. I pattern sugli oggetti stabiliscono le relazioni tra gli oggetti che possono essere cambiate a run-time e sono pertanto più dinamici.
La maggior parte dei design pattern è di tipo oggetto quindi essenzialmente dinamici (gestibili a run-time).