Design Patterns: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Synthebot (discussione | contributi)
m r2.6.4) (Bot: Aggiungo sv:Design Patterns
Botcrux (discussione | contributi)
m Bot: fix wl, replaced: Design Patterns patterns → Design pattern
 
(28 versioni intermedie di 23 utenti non mostrate)
Riga 1:
{{nota disambigua|la teoria|[[Design pattern]]}}
{{Libro
|titolo = Design Patterns - Elementi per il riuso di software ad oggetti
|titoloorig = Design Patterns: Elements of Reusable<br />Object-Oriented Software,
|autore =
|autore = [[Erich Gamma|Gamma, E.]], [[Richard Helm|Helm, R.]], [[Ralph Johnson (informatico)|Johnson, R.]] e [[John Vlissides|Vlissides, J.]]
|annoorig = 1995
|genere = [[Saggio]]
Riga 9:
|lingua = en
}}
'''''Design Patterns - Elementi per il riuso di software ad oggetti''''' è un saggio del [[1995]]. Nel libro gli autori riprendono un concetto dell'[[architettura|architetto]] [[Christopher Alexander]], il ''[[A Pattern Language|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 (informatica)|programmazione]]: il [[movimento pattern]].
 
La ''filosofia'' di progettazione dei software mediante pattern mutua quella di ispirazione architettonica e urbana di Alexander, riportata in [[#Bibliografia e riferimenti|bibliografia]].
Riga 18:
 
Il concetto stesso di pattern ne permette facilmente la traduzione in qualunque linguaggio: nel primo capitolo §1.1 della versione inglese, si dice:
{{quoteCitazione|Se avessimo usato un linguaggio procedurale, avremmo incluso anche i design pattern "Ereditarietà", "IncapsulazioneIncapsulamento", "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 [[Microsoft Windows|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'impiantamentouso 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 fourFour (scrittori)|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 ==
*{{Cita libro
|autore= [[Erich Gamma|Gamma, E.]], [[Richard Helm|Helm, R.]], [[Ralph Johnson (informatico)|Johnson, R.]] e [[John Vlissides|Vlissides, J.]]
|altri=
|titolo= Design Patterns - Elementi per il riuso di software ad oggetti
|anno= [[2002]]
|editore= Pearson Education Italia
|p= 412
|edizione=
|isbn= 88-7192-150-X
|pagine= pp. 412
|id= ISBN 887192150X
}}
 
==Bibliografia==
*Salingaros, N., [http://wwwzeta.math.utsa.edu/sphere/salingar~yxk833/Chris.text.html Some notes on Christopher Alexander] {{Webarchive|url=https://web.archive.org/web/20110415002236/http://zeta.math.utsa.edu/~yxk833/Chris.text.html |date=15 aprile 2011 }}", UTSA
*Schulman, A. ''[[Windows 95 - dentro il sistema]]''
 
== Voci correlate ==
*[[Cocoa (software)]]
*[[Design pattern]]
*[[PLoP]]
*[[Nikos Salingaros]]
*[[A patternPattern languageLanguage]]
 
== Collegamenti esterni ==
* {{Collegamenti esterni}}
* [http://eii.pucv.cl/pers/guidi/documentos/Guidi-GoFDesignPatternsInJava.pdf I 23 Design Patterns nel linguaggio Java]
* {{cita web|1=http://eii.pucv.cl/pers/guidi/documentos/Guidi-GoFDesignPatternsInJava.pdf|2=I 23 Design Patterns nel linguaggio Java|formato=pdf|accesso=25 novembre 2010|dataarchivio=11 febbraio 2014|urlarchivio=https://web.archive.org/web/20140211034344/http://eii.pucv.cl/pers/guidi/documentos/Guidi-GoFDesignPatternsInJava.pdf|urlmorto=sì}}
 
{{Design pattern}}
{{portale|informatica}}
 
[[Categoria:Teorie dell'informatica]]
[[Categoria:Saggi di informatica]]
[[Categoria:Libri sull'informatica]]
 
[[bs:Design Patterns (knjiga)]]
[[de:Entwurfsmuster (Buch)]]
[[en:Design Patterns]]
[[es:Design Patterns]]
[[fa:الگوهای طراحی]]
[[ko:디자인 패턴 (책)]]
[[ru:Design Patterns]]
[[sv:Design Patterns]]
[[vi:Design Patterns]]
[[zh:设计模式:可复用面向对象软件的基础]]