Tu banner alternativo

Design Patterns

In questo articolo affronteremo il tema Design Patterns, che negli ultimi anni ha acquisito grande rilevanza per il suo impatto su diversi ambiti della società. Fin dalla sua comparsa Design Patterns ha suscitato grande interesse e generato intensi dibattiti nell'opinione pubblica. Nel corso di questa ricerca verranno analizzati i diversi aspetti relativi a Design Patterns, nonché le sue implicazioni in diversi contesti. Verranno inoltre affrontate le prospettive attuali e future di Design Patterns, al fine di fornire una visione completa di questo argomento attualmente significativo.

Tu banner alternativo
Disambiguazione – Se stai cercando la teoria, vedi Design pattern.
Design Patterns - Elementi per il riuso di software ad oggetti
Titolo originaleDesign Patterns: Elements of Reusable
Object-Oriented Software,
AutoreErich Gamma, John Vlissides, Richard Helm e Ralph Johnson
1ª ed. originale1995
GenereSaggio
SottogenereInformatica
Lingua originaleinglese

Design Patterns - Elementi per il riuso di software ad oggetti è un saggio del 1995. Nel libro gli autori riprendono un concetto dell'architetto Christopher Alexander, il design pattern, adattandolo all'informatica.

Anche se il concetto di pattern come soluzione ricorrente a un problema è anteriore all'uscita del libro, l'enorme successo riscosso da quest'ultimo ha contribuito notevolmente alla sua popolarizzazione, che ha dato inizio ad un'intera corrente filosofica della programmazione: il movimento pattern.

La filosofia di progettazione dei software mediante pattern mutua quella di ispirazione architettonica e urbana di Alexander, riportata in bibliografia.

I pattern sono utilizzati da molti dei migliori programmatori, quali Bruce Eckel, Andrei Alexandrescu ed Herb Sutter, e la loro conoscenza viene solitamente raccomandata a chiunque voglia progettare software a livello professionale, non solamente tramite il paradigma ad oggetti. In effetti i pattern non sono basati su di uno specifico linguaggio di programmazione, anche se nel libro gli esempi di codice sono in C++ e Smalltalk, con alcuni diagrammi di classe di tipo UML.

Il concetto stesso di pattern ne permette facilmente la traduzione in qualunque linguaggio: nel primo capitolo §1.1 della versione inglese, si dice:

«Se avessimo usato un linguaggio procedurale, avremmo incluso anche i design pattern "Ereditarietà", "Incapsulamento", "Polimorfismo" Alcuni dei pattern spiegati sono implementati nativamente da alcuni linguaggi ad oggetti: ad esempio il MultiMethod del CLOS rende poco necessario il "Visitor"»

E in effetti, il meccanismo della interrupt chain usato in ambiente Intel non è che l'implementazione in assembly di un Observer pattern: gli INT costituiscono le varie notify(), mentre le funzioni registrate nella interrupt chain sono gli observer. Volendo, poi, il meccanismo che nelle versioni a 32 bit di Windows assorbe gli INT prima della chain, è una versione, sempre in assembly, del Decorator (v. Windows 95 - dentro il sistema per maggiori dettagli). Tuttavia, l'uso in un linguaggio object oriented ne facilita senz'altro l'implementazione e talvolta alcuni tipi vengono supportati nativamente.

Design pattern

Un design pattern descrive una soluzione generale a un problema di progettazione ricorrente, gli attribuisce un nome, astrae e identifica gli aspetti principali della struttura utilizzata per la soluzione del problema, identifica le classi e le istanze partecipanti e la distribuzione delle responsabilità, descrive quando e come può essere applicato. In breve definisce un problema, i contesti tipici in cui si trova e la soluzione ottimale allo stato dell'arte.

Nel libro gli autori, detti Gang of Four, cioè "banda dei quattro", identificarono 23 tipi di Design Pattern, suddivisi in 3 categorie: strutturali, creazionali e comportamentali. Inoltre, per la descrizione dei pattern, spesso si rende necessario il ricorso a pattern più semplici, dando così origine al cosiddetto linguaggio di pattern.

Edizioni

Bibliografia

Voci correlate

Collegamenti esterni