Design pattern: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
parziale riorganizzazione della struttura |
|||
Riga 1:
{{nota disambigua|descrizione=il libro|titolo=[[Design Patterns]]}}
La differenza tra un [[algoritmo]] e un design pattern è che il primo risolve problemi computazionali, mentre il secondo è legato agli aspetti progettuali del software.
==Storia==
Il termine fu inizialmente introdotto in [[architettura]] in un celebre saggio di [[Christopher Alexander]]; in seguito, proprio l'opera di Alexander ispirò la nascita di un settore dell'[[ingegneria del software]] dedicato all'applicazione del concetto di design pattern alle [[architettura software|architetture software]], soprattutto [[programmazione orientata agli oggetti|object-oriented]]. Oggi, l'espressione ''design pattern'' viene usata principalmente con riferimento a questo particolare contesto.
Il tema dei pattern viene oggi considerato una delle linee principali di sviluppo dell'ingegneria del software object-oriented. Esso trova applicazioni in tutta una serie di contesti di grande interesse per l'[[industria del software]], dallo [[componente software|sviluppo di software basato su componenti]], ai [[sistema aperto|sistemi aperti]], ai [[framework]] e così via. La maggior parte dei [[linguaggio di programmazione|linguaggi di programmazione]] moderni, e di tecnologie correlate, sono stati progettati (o modificati) tenendo conto anche dell'obiettivo di essere coerenti con questo approccio emergente allo sviluppo del software.
Riga 19 ⟶ 23:
L'uso di [[pattern]] nella descrizione di altri pattern dà origine ai cosiddetti [[linguaggio di pattern|linguaggi di pattern]].
==Utilizzo==
==Pattern Creazionali==▼
{{sectstub}}
===Critiche===
{{sectstub}}
==Classificazione dei design pattern==
I design pattern possono essere classificati con diversi criteri, i più comuni dei quali sono quelli che evidenziano il tipo di problema che si cerca di risolvere. Il tipo di problema può essere legato ad uno specifico dominio progettuale (telecomunicazioni, reti, software...) oppure, più comunemente, al problema progettuale in senso più ampio (ad esempio creazione, comportamento, navigazione di oggetti o strutture dati).
▲===Pattern Creazionali===
I pattern creazionali nascondono i costruttori delle classi e mettono dei metodi al loro posto creando un'interfaccia. In questo modo si possono utilizzare oggetti senza sapere come sono implementati.
Riga 31 ⟶ 43:
* [[Singleton]], il cui scopo è assicurare che di una classe possa essere creata una sola istanza.
===Pattern Strutturali===
* L'[[Adapter pattern|Adapter]] converte l'interfaccia di una classe in una interfaccia diversa
* [[Bridge pattern|Bridge]]
Riga 45 ⟶ 56:
* [[Private class data pattern|Private class data]]
===Pattern Architetturali===
I [[pattern architetturale|pattern architetturali]] esprimono delle soluzioni adeguate alle fondamentali strutture o schemi di un sistema software.
* [[Broker pattern|Broker]]
Riga 56 ⟶ 67:
* [[Blackboard pattern|Blackboard]]
===Pattern Comportamentali===
* [[Chain of responsibility pattern|Chain of Responsibility]]
* Il [[Command pattern|Command]] permette di isolare la porzione di codice che effettua un'azione dal codice che ne richiede l'esecuzione.
Riga 72 ⟶ 83:
* Il [[Visitor]] permette di separare un algoritmo dalla struttura di oggetti composti a cui è applicato, in modo da poter aggiungere nuovi comportamenti senza dover modificare la struttura stessa.
===Pattern di metodologia===
*[[Make it run, make it right, make it fast, make it small]]
|