Un design pattern può essere definito come "la descrizione di una soluzione provata ad un problema ricorrente in un determinato contesto". In pratica un design pattern è una regola che esprime una relazione tra un contesto, un problema ed una soluzione.
Durante il corso verranno mostrati i 23 pattern GoF, dal codice alla loro implementazione. Di ognuno si analizzerà il problema ricorrente che è chiamato a risolvere, il contesto in cui il problema si colloca e la soluzione trovata.
Il corso di GOF Design Pattern di K-Tech è articolato in quattro moduli:
1. Introduzione ai Design Pattern
2. Design Pattern Creazionali
3. Design Pattern Strutturali
4. Design Pattern Comportamentali
Programma completo del corso: http://www.k-tech.it/formazione/corso_gof_design_pattern
ScrapeGraphAI: a new way to scrape context with AI
Corso GOF Design Pattern
1. Corso GOF Design Pattern
Modulo 1: Introduzione ai Design Pattern
Leggi il programma completo del corso
www.javaportal.it | www.k-tech.it corsi@k-tech.it 1
2. Agenda
►Cap 1 - Introduzione ai Design Pattern◄
Cap 2 - Design Pattern Creazionali
Cap 3 - Design Pattern Strutturali
Cap 4 - Design Pattern Comportamentali
www.javaportal.it | www.k-tech.it corsi@k-tech.it 2
3. Un po’ di Storia…
1977
Il lavoro
● Il termine Pattern fu introdotto dell’architetto
in un celebre saggio di Christopher
Alexander
Christopher Alexander
nell’ambito della architettura 1980
1987
edile. Cunningham e Beck
applicano le idee di
● L'opera di Alexander ispirò la Alexander per
sviluppare cinque
nascita di un settore 1985
pattern per le UI
dell'ingegneria del software,
1991
dedicato all'applicazione del Tesi di dottorato di
concetto di Design Pattern alle 1990 Erich Gamma
architetture software.
1993
● Attualmente, l'espressione Gruppo di
discussione sul web
“Design Pattern” viene usata 1995
principalmente con riferimento 1995
all’ambito dell’ingegneria del Gangs of Four
book
software.
www.javaportal.it | www.k-tech.it corsi@k-tech.it 3
4. …Un po’ di Storia
La nascita del movimento dei pattern in informatica si deve al
celebre libro:
Design Patterns: Elementi per il riuso di software ad
Oggetti, di: Erich Gamma, Richard Helm, Ralph Johnson,
John Vlissides.
1995
Grazie al successo di quest'opera, i suoi quattro autori divennero
talmente citati che la comunità scientifica iniziò, per brevità, a identificarli
collettivamente con il nome: la "banda dei quattro" (Gang of Four o GoF).
In tale libro si descrivono 23 pattern, che successivamente
verranno battezzati come “Design Pattern della Gangs of Four”.
www.javaportal.it | www.k-tech.it corsi@k-tech.it 4
5. Diventare Maestro di Scacchi
Nel gioco degli scacchi:
● Per essere un principiante basta conoscere le regole del gioco e
le principali mosse.
● Per essere un discreto giocatore bisogna apprendere dei principi
ed acquisire alcune strategie.
● Per essere un maestro bisogna studiare le partite dei grandi
maestri, individuare i pattern nascosti, memorizzarli e applicarli.
www.javaportal.it | www.k-tech.it corsi@k-tech.it 5
6. Diventare Master Designer
Nello sviluppo del software:
1. Primo: imparare le regole
● Linguaggi (di programmazione e di progettazione)
● Strutture Dati
● Algoritmi
2. In seguito: apprendere i principi
● OOA (Object Oriented Analysis)
● OOD (Object Oriented Design)
● OOP (Object Oriented Programming)
3. Infine: studiare i progetti e le soluzioni degli esperti
● Comprendere i Design Pattern
● Memorizzare i Design Pattern
● Applicare i Design Pattern
www.javaportal.it | www.k-tech.it corsi@k-tech.it 6
7. Definizione dei Design Pattern
“Ogni pattern descrive un problema che si ripete più e più volte nel
nostro ambiente, descrive poi il nucleo della soluzione del problema,
in modo tale che si possa usare la soluzione un milione di volte,
senza mai applicarla nella stessa maniera"
C. Alexander
In pratica un Design Pattern è una regola tripartita, che esprime
una relazione tra un contesto, un problema ed una soluzione.
CONTESTO
PROBLEMA DESIGN SOLUZIONE
PATTERN
www.javaportal.it | www.k-tech.it corsi@k-tech.it 7
8. Classificazione dei Pattern Software
● Design Patterns:
Per lo sviluppo del software (spesso Object-Oriented)
●
Analysis Patterns:
Per definire modelli di analisi ricorrenti e riutilizzabili.
● Organization Patterns:
Per strutturare organizzazioni e progetti.
● Process Patterns:
Per definire processi di sviluppo software.
www.javaportal.it | www.k-tech.it corsi@k-tech.it 8
9. Classificazione dei Design Pattern
I Design Pattern possono essere classificati in funzione del loro livello di
astrazione/dettaglio:
● Architectural Design Patterns:
Descrivono l’organizzazione strutturale fondamentale di un sistema software
in termini di sottosistemi,dei loro compiti e delle modalità di interazione.
●
Design Patterns:
Forniscono uno schema per raffinare i sottosistemi o componenti di un
sistema software. In genere descrivono strutture ricorrenti di componenti
comunicanti che risolvono un generico problema di progettazione in un
particolare contesto.
● Idioms o Coding Design Patterns:
Pattern di basso livello specifico di un linguaggio di programmazione. Un
idioma descrive come implementare particolari aspetti dei componenti o le
relazioni tra essi utilizzando caratteristiche del linguaggio di programmazione
scelto.
www.javaportal.it | www.k-tech.it corsi@k-tech.it 9
10. Caratteristiche dei Design Pattern
Un design pattern nomina, astrae ed identifica gli aspetti chiave di
un problema di progettazione:
● Le classi e le istanze che vi partecipano.
● I loro ruoli e le collaborazioni.
● La distribuzione delle responsabilità.
www.javaportal.it | www.k-tech.it corsi@k-tech.it 10
11. Caratteristiche dei Design Pattern
● Nome: permette di identificare il Design Pattern con una parola
e di lavorare con un alto livello di astrazione, indica lo scopo del
pattern.
● Intento: descrive brevemente le funzionalità e lo scopo.
● Problema (Motivazione+Applicabilità): descrive il problema a
cui il pattern è applicato e le condizioni necessarie per
applicarlo.
● Soluzione: descrive gli elementi (classi) che costituiscono il
Design Pattern, le loro responsabilità e le loro relazioni.
● Conseguenze: indicano risultati, compromessi, vantaggi e
svantaggi nell'uso del Design Pattern.
www.javaportal.it | www.k-tech.it corsi@k-tech.it 11
12. Obiettivi dei Design Pattern
● Creare una letteratura per la comunità Object-Oriented.
● Aiutare gli sviluppatori a risolvere problemi già trattati.
● Creare un linguaggio per comunicare intuizioni ed esperienza
sui problemi e sulle relative soluzioni.
www.javaportal.it | www.k-tech.it corsi@k-tech.it 12
13. Importanza dei Design Pattern
Trasferiscono l’esperienza
I Design Pattern costituiscono una tecnica efficace per trasferire la
conoscenza e l'esperienza dei progettisti, rendendola disponibile a
tutti in modo comprensibile e concreto.
“Sbagliando si impara…” vs “Impara dai successi altrui…”
Aiutano a progettare in modo migliore ed in minor tempo
● Costruire del software che sia riusabile.
● Evitare scelte che compromettano il suo riutilizzo.
● Migliorare la documentazione e la manutenzione di sistemi esistenti.
Non re-inventiamo la ruota ogni volta!
www.javaportal.it | www.k-tech.it corsi@k-tech.it 13
14. Il Catalogo dei Design Pattern GoF
Il libro della GoF classifica 23 Design Pattern e li suddivide
in 3 categorie:
● Creational (Pattern Creazionali)
●Trattano l’inizializzazione e la configurazione di classi ed oggetti.
● Structural (Pattern Strutturali)
Trattano il disaccoppiamento tra interfacce ed implementazioni delle
●
classi, degli oggetti e della loro composizione.
● Behavioral (Pattern Comportamentali)
● Trattano le interazioni dinamiche tra gruppi di classi ed oggetti.
● Alcuni pattern sono utilizzati insieme.
● Alcuni sono alternativi di altri.
● Altri sono simili ma hanno intenti differenti.
www.javaportal.it | www.k-tech.it corsi@k-tech.it 14
16. Design Pattern Creazionali
● Permettono di astrarre il processo di creazione degli oggetti.
● Rendono un sistema indipendente da come i suoi oggetti
sono creati,composti, e rappresentati.
● Incapsulano conoscenza sulle classi concrete che un
sistema usa.
● Nascondono come le istanze delle classi sono create e
composte.
www.javaportal.it | www.k-tech.it corsi@k-tech.it 16
17. Design Pattern Strutturali
● Sono dedicati alla composizione di classi e oggetti per creare
delle strutture più grandi.
● Gli Structual class Pattern utilizzano l'ereditarietà per creare
interfacce o implementazioni.
● Gli Structual object Pattern descrivono il modo in cui comporre
gli oggetti per realizzare nuove funzionalità.
www.javaportal.it | www.k-tech.it corsi@k-tech.it 17
18. Design Pattern Comportamentali
● Focalizzano sul controllo del flusso tra oggetti.
● Descrivono le comunicazioni tra oggetti.
● Aiutano a valutare le responsabilità assegnate agli oggetti.
● Suggeriscono modi per incapsulare algoritmi dentro classi.
www.javaportal.it | www.k-tech.it corsi@k-tech.it 18
19. BREAK
Dopo la pausa:
Abstract Factory
Leggi il programma completo del corso
www.javaportal.it | www.k-tech.it corsi@k-tech.it 19