SlideShare a Scribd company logo
1 of 19
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
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
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
…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
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
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
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
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
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
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
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
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
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
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
Classificazione dei Design Pattern
                                                                DESIGN
                                                               PATTERN




             CREAZIONALI                         STRUTTURALI                               COMPORTAMENTALI




 FACTORY
                             ADAPTER                               FLYWEIGHT                                            INTERPRETER
  METHOD


  ABSTRACT                                                                                                              TEMPLATE
                                   BRIDGE                          PROXY
   FACTORY                                                                                                               METHOD


                                                                                                                    CHAIN OF
     BUILDER                         COMPOSITE                 FACADE                                             RESPONSABIL.
                                                                               STATE



           PROTOTYPE                             DECORATOR                                                       COMMAND
                                                                                OBSERVER



                       SINGLETON                                                                             ITERATOR

                                                                                       MEMENTO



                                                                                                  MEDIATOR




www.javaportal.it | www.k-tech.it                                                           corsi@k-tech.it                           15
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
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
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
BREAK

                            Dopo la pausa:

                            Abstract Factory




       Leggi il programma completo del corso



www.javaportal.it | www.k-tech.it              corsi@k-tech.it   19

More Related Content

Viewers also liked

Super junior (슈퍼주니어) Miembros.
Super junior (슈퍼주니어)  Miembros.Super junior (슈퍼주니어)  Miembros.
Super junior (슈퍼주니어) Miembros.bellamapicote
 
Update on Education Transformation and the Science Curriculum
Update on Education Transformation and the Science Curriculum Update on Education Transformation and the Science Curriculum
Update on Education Transformation and the Science Curriculum sciencecharter
 
Korean Language
Korean LanguageKorean Language
Korean Languagewordies56
 
Pepperdine phac recruiter reception
Pepperdine phac recruiter receptionPepperdine phac recruiter reception
Pepperdine phac recruiter receptionhrmunoz
 
Corea del sur
Corea del surCorea del sur
Corea del surKxe Duran
 
[Tutorial] Diccionario de Naver (Español)
[Tutorial] Diccionario de Naver (Español)[Tutorial] Diccionario de Naver (Español)
[Tutorial] Diccionario de Naver (Español)Nadhia Olivos
 
LEZ:PRESENTARSI IN ITALIANO
LEZ:PRESENTARSI IN ITALIANOLEZ:PRESENTARSI IN ITALIANO
LEZ:PRESENTARSI IN ITALIANOMaruzells zells
 
Topic 7 earnings_per_share
Topic 7 earnings_per_shareTopic 7 earnings_per_share
Topic 7 earnings_per_sharekim rae KI
 
Libro de coreano básico
Libro de coreano básicoLibro de coreano básico
Libro de coreano básicoIrving Lee
 
120 verbos de accion coreanos que debes saber
120 verbos de accion coreanos que debes saber120 verbos de accion coreanos que debes saber
120 verbos de accion coreanos que debes saberStudent
 
MGA GAWAING PANGKALUSUGAN TUNGO SA MABIKAS NA PAGGAYAK
MGA GAWAING PANGKALUSUGAN TUNGO SA MABIKAS NA PAGGAYAKMGA GAWAING PANGKALUSUGAN TUNGO SA MABIKAS NA PAGGAYAK
MGA GAWAING PANGKALUSUGAN TUNGO SA MABIKAS NA PAGGAYAKPRINTDESK by Dan
 

Viewers also liked (20)

5o CONCURSO NACIONAL DE ORATORIA Y DEBATE PÚBLICO 2014
5o CONCURSO NACIONAL DE ORATORIA Y DEBATE PÚBLICO 20145o CONCURSO NACIONAL DE ORATORIA Y DEBATE PÚBLICO 2014
5o CONCURSO NACIONAL DE ORATORIA Y DEBATE PÚBLICO 2014
 
Super junior (슈퍼주니어) Miembros.
Super junior (슈퍼주니어)  Miembros.Super junior (슈퍼주니어)  Miembros.
Super junior (슈퍼주니어) Miembros.
 
Update on Education Transformation and the Science Curriculum
Update on Education Transformation and the Science Curriculum Update on Education Transformation and the Science Curriculum
Update on Education Transformation and the Science Curriculum
 
Ojo [눈]
Ojo [눈]Ojo [눈]
Ojo [눈]
 
Korean Language
Korean LanguageKorean Language
Korean Language
 
Pepperdine phac recruiter reception
Pepperdine phac recruiter receptionPepperdine phac recruiter reception
Pepperdine phac recruiter reception
 
Corea del sur
Corea del surCorea del sur
Corea del sur
 
Taller de caligrafía coreana
Taller de caligrafía coreanaTaller de caligrafía coreana
Taller de caligrafía coreana
 
Presentacion idioma coreano
Presentacion idioma coreanoPresentacion idioma coreano
Presentacion idioma coreano
 
Curso de Coreano Gratuito
Curso de Coreano GratuitoCurso de Coreano Gratuito
Curso de Coreano Gratuito
 
[Tutorial] Diccionario de Naver (Español)
[Tutorial] Diccionario de Naver (Español)[Tutorial] Diccionario de Naver (Español)
[Tutorial] Diccionario de Naver (Español)
 
LEZ:PRESENTARSI IN ITALIANO
LEZ:PRESENTARSI IN ITALIANOLEZ:PRESENTARSI IN ITALIANO
LEZ:PRESENTARSI IN ITALIANO
 
Korean1
Korean1Korean1
Korean1
 
NEW EPS STANDARD TEXTBOOK
NEW EPS STANDARD TEXTBOOKNEW EPS STANDARD TEXTBOOK
NEW EPS STANDARD TEXTBOOK
 
Chapter 3
Chapter 3Chapter 3
Chapter 3
 
Topic 7 earnings_per_share
Topic 7 earnings_per_shareTopic 7 earnings_per_share
Topic 7 earnings_per_share
 
Libro
LibroLibro
Libro
 
Libro de coreano básico
Libro de coreano básicoLibro de coreano básico
Libro de coreano básico
 
120 verbos de accion coreanos que debes saber
120 verbos de accion coreanos que debes saber120 verbos de accion coreanos que debes saber
120 verbos de accion coreanos que debes saber
 
MGA GAWAING PANGKALUSUGAN TUNGO SA MABIKAS NA PAGGAYAK
MGA GAWAING PANGKALUSUGAN TUNGO SA MABIKAS NA PAGGAYAKMGA GAWAING PANGKALUSUGAN TUNGO SA MABIKAS NA PAGGAYAK
MGA GAWAING PANGKALUSUGAN TUNGO SA MABIKAS NA PAGGAYAK
 

Similar to Corso GOF Design Pattern

Introduzione ai Design Pattern
Introduzione ai Design PatternIntroduzione ai Design Pattern
Introduzione ai Design PatternRiccardo Cardin
 
Design patterns - parte 1
Design patterns - parte 1Design patterns - parte 1
Design patterns - parte 1Fabio Armani
 
Ribesdesign interfacce
Ribesdesign interfacceRibesdesign interfacce
Ribesdesign interfacceRibesdesign
 
One style to rule'em all - Styleguide & Atomic Design ~ Gaia Zuccaro
One style to rule'em all - Styleguide & Atomic Design ~ Gaia ZuccaroOne style to rule'em all - Styleguide & Atomic Design ~ Gaia Zuccaro
One style to rule'em all - Styleguide & Atomic Design ~ Gaia ZuccaroDEED_Design_Development
 
Riuso Object Oriented
Riuso Object OrientedRiuso Object Oriented
Riuso Object OrientedStefano Fago
 
Usare i Design System - Un approccio Frameworkless per la tua Web Application
Usare i Design System - Un approccio Frameworkless per la tua Web ApplicationUsare i Design System - Un approccio Frameworkless per la tua Web Application
Usare i Design System - Un approccio Frameworkless per la tua Web Applicationextrategy
 
Corso introduttivo di Design Pattern in Java per Elis - 1
Corso introduttivo di Design Pattern in Java per Elis - 1Corso introduttivo di Design Pattern in Java per Elis - 1
Corso introduttivo di Design Pattern in Java per Elis - 1Antonio Musarra
 
Programma modellazione 3 d e biografia
Programma modellazione 3 d e biografiaProgramma modellazione 3 d e biografia
Programma modellazione 3 d e biografiaOrnella Pirone
 
Programma modellazione 3 d e biografia
Programma modellazione 3 d e biografiaProgramma modellazione 3 d e biografia
Programma modellazione 3 d e biografiaCollettivo Creativo
 
Collettivo Creativo | Programma modellazione 3D e biografia- WorkshopCreativi...
Collettivo Creativo | Programma modellazione 3D e biografia- WorkshopCreativi...Collettivo Creativo | Programma modellazione 3D e biografia- WorkshopCreativi...
Collettivo Creativo | Programma modellazione 3D e biografia- WorkshopCreativi...Ornella Pirone
 
Corso Unified Modeling Language (UML)
Corso Unified Modeling Language (UML)Corso Unified Modeling Language (UML)
Corso Unified Modeling Language (UML)K-Tech Formazione
 
Studio e implementazione di uno strumento di configurazione e visualizzazione...
Studio e implementazione di uno strumento di configurazione e visualizzazione...Studio e implementazione di uno strumento di configurazione e visualizzazione...
Studio e implementazione di uno strumento di configurazione e visualizzazione...Matteo Miotto
 
20. Principi e linee guida (I)
20. Principi e linee guida (I)20. Principi e linee guida (I)
20. Principi e linee guida (I)Roberto Polillo
 
Ideaazione e progettazione multimediale 4a parte
Ideaazione e progettazione multimediale 4a parteIdeaazione e progettazione multimediale 4a parte
Ideaazione e progettazione multimediale 4a parteValerio Eletti
 
Mob04 best practices for windows phone ui design
Mob04   best practices for windows phone ui designMob04   best practices for windows phone ui design
Mob04 best practices for windows phone ui designDotNetCampus
 
Un approccio Frameworkless per sviluppare la tua Single Page Application
Un approccio Frameworkless per sviluppare la tua Single Page ApplicationUn approccio Frameworkless per sviluppare la tua Single Page Application
Un approccio Frameworkless per sviluppare la tua Single Page Applicationextrategy
 

Similar to Corso GOF Design Pattern (20)

Introduzione ai Design Pattern
Introduzione ai Design PatternIntroduzione ai Design Pattern
Introduzione ai Design Pattern
 
Design patterns - parte 1
Design patterns - parte 1Design patterns - parte 1
Design patterns - parte 1
 
Ribesdesign interfacce
Ribesdesign interfacceRibesdesign interfacce
Ribesdesign interfacce
 
One style to rule'em all - Styleguide & Atomic Design ~ Gaia Zuccaro
One style to rule'em all - Styleguide & Atomic Design ~ Gaia ZuccaroOne style to rule'em all - Styleguide & Atomic Design ~ Gaia Zuccaro
One style to rule'em all - Styleguide & Atomic Design ~ Gaia Zuccaro
 
Riuso Object Oriented
Riuso Object OrientedRiuso Object Oriented
Riuso Object Oriented
 
Usare i Design System - Un approccio Frameworkless per la tua Web Application
Usare i Design System - Un approccio Frameworkless per la tua Web ApplicationUsare i Design System - Un approccio Frameworkless per la tua Web Application
Usare i Design System - Un approccio Frameworkless per la tua Web Application
 
Corso introduttivo di Design Pattern in Java per Elis - 1
Corso introduttivo di Design Pattern in Java per Elis - 1Corso introduttivo di Design Pattern in Java per Elis - 1
Corso introduttivo di Design Pattern in Java per Elis - 1
 
scratch_parte1.pptx
scratch_parte1.pptxscratch_parte1.pptx
scratch_parte1.pptx
 
Programma modellazione 3 d e biografia
Programma modellazione 3 d e biografiaProgramma modellazione 3 d e biografia
Programma modellazione 3 d e biografia
 
Programma modellazione 3 d e biografia
Programma modellazione 3 d e biografiaProgramma modellazione 3 d e biografia
Programma modellazione 3 d e biografia
 
Collettivo Creativo | Programma modellazione 3D e biografia- WorkshopCreativi...
Collettivo Creativo | Programma modellazione 3D e biografia- WorkshopCreativi...Collettivo Creativo | Programma modellazione 3D e biografia- WorkshopCreativi...
Collettivo Creativo | Programma modellazione 3D e biografia- WorkshopCreativi...
 
Object Oriented Programming
Object Oriented ProgrammingObject Oriented Programming
Object Oriented Programming
 
Corso Unified Modeling Language (UML)
Corso Unified Modeling Language (UML)Corso Unified Modeling Language (UML)
Corso Unified Modeling Language (UML)
 
Introduzione a UML
Introduzione a UMLIntroduzione a UML
Introduzione a UML
 
Studio e implementazione di uno strumento di configurazione e visualizzazione...
Studio e implementazione di uno strumento di configurazione e visualizzazione...Studio e implementazione di uno strumento di configurazione e visualizzazione...
Studio e implementazione di uno strumento di configurazione e visualizzazione...
 
Approcci al design
Approcci al designApprocci al design
Approcci al design
 
20. Principi e linee guida (I)
20. Principi e linee guida (I)20. Principi e linee guida (I)
20. Principi e linee guida (I)
 
Ideaazione e progettazione multimediale 4a parte
Ideaazione e progettazione multimediale 4a parteIdeaazione e progettazione multimediale 4a parte
Ideaazione e progettazione multimediale 4a parte
 
Mob04 best practices for windows phone ui design
Mob04   best practices for windows phone ui designMob04   best practices for windows phone ui design
Mob04 best practices for windows phone ui design
 
Un approccio Frameworkless per sviluppare la tua Single Page Application
Un approccio Frameworkless per sviluppare la tua Single Page ApplicationUn approccio Frameworkless per sviluppare la tua Single Page Application
Un approccio Frameworkless per sviluppare la tua Single Page Application
 

More from K-Tech Formazione

Tecniche Di Troubleshooting Nei Sistemi Distribuiti
Tecniche Di Troubleshooting Nei Sistemi DistribuitiTecniche Di Troubleshooting Nei Sistemi Distribuiti
Tecniche Di Troubleshooting Nei Sistemi DistribuitiK-Tech Formazione
 
Fai la cosa giusta da subito: Troubleshooting Server Side JVM
Fai la cosa giusta da subito: Troubleshooting  Server Side JVMFai la cosa giusta da subito: Troubleshooting  Server Side JVM
Fai la cosa giusta da subito: Troubleshooting Server Side JVMK-Tech Formazione
 
Troubleshooting a server side JVM: fast problem determination
Troubleshooting a server side JVM: fast problem determinationTroubleshooting a server side JVM: fast problem determination
Troubleshooting a server side JVM: fast problem determinationK-Tech Formazione
 
Agile APM an heretic's approach to SPE
Agile APM an heretic's approach to SPEAgile APM an heretic's approach to SPE
Agile APM an heretic's approach to SPEK-Tech Formazione
 
Segnali dal futuro. Prevedere le prestazioni dei sistemi web ed evitare gli a...
Segnali dal futuro. Prevedere le prestazioni dei sistemi web ed evitare gli a...Segnali dal futuro. Prevedere le prestazioni dei sistemi web ed evitare gli a...
Segnali dal futuro. Prevedere le prestazioni dei sistemi web ed evitare gli a...K-Tech Formazione
 
Prevedere il comportamento delle applicazioni Web in produzione
Prevedere il comportamento delle applicazioni Web in produzionePrevedere il comportamento delle applicazioni Web in produzione
Prevedere il comportamento delle applicazioni Web in produzioneK-Tech Formazione
 
Corso Programmazione Java Base
Corso Programmazione Java BaseCorso Programmazione Java Base
Corso Programmazione Java BaseK-Tech Formazione
 
APM: WWWWW (What, Why, Where, Who, When)
APM: WWWWW (What, Why, Where, Who, When)APM: WWWWW (What, Why, Where, Who, When)
APM: WWWWW (What, Why, Where, Who, When)K-Tech Formazione
 
Corso Object Oriented Analysis and Design
Corso Object Oriented Analysis and DesignCorso Object Oriented Analysis and Design
Corso Object Oriented Analysis and DesignK-Tech Formazione
 

More from K-Tech Formazione (9)

Tecniche Di Troubleshooting Nei Sistemi Distribuiti
Tecniche Di Troubleshooting Nei Sistemi DistribuitiTecniche Di Troubleshooting Nei Sistemi Distribuiti
Tecniche Di Troubleshooting Nei Sistemi Distribuiti
 
Fai la cosa giusta da subito: Troubleshooting Server Side JVM
Fai la cosa giusta da subito: Troubleshooting  Server Side JVMFai la cosa giusta da subito: Troubleshooting  Server Side JVM
Fai la cosa giusta da subito: Troubleshooting Server Side JVM
 
Troubleshooting a server side JVM: fast problem determination
Troubleshooting a server side JVM: fast problem determinationTroubleshooting a server side JVM: fast problem determination
Troubleshooting a server side JVM: fast problem determination
 
Agile APM an heretic's approach to SPE
Agile APM an heretic's approach to SPEAgile APM an heretic's approach to SPE
Agile APM an heretic's approach to SPE
 
Segnali dal futuro. Prevedere le prestazioni dei sistemi web ed evitare gli a...
Segnali dal futuro. Prevedere le prestazioni dei sistemi web ed evitare gli a...Segnali dal futuro. Prevedere le prestazioni dei sistemi web ed evitare gli a...
Segnali dal futuro. Prevedere le prestazioni dei sistemi web ed evitare gli a...
 
Prevedere il comportamento delle applicazioni Web in produzione
Prevedere il comportamento delle applicazioni Web in produzionePrevedere il comportamento delle applicazioni Web in produzione
Prevedere il comportamento delle applicazioni Web in produzione
 
Corso Programmazione Java Base
Corso Programmazione Java BaseCorso Programmazione Java Base
Corso Programmazione Java Base
 
APM: WWWWW (What, Why, Where, Who, When)
APM: WWWWW (What, Why, Where, Who, When)APM: WWWWW (What, Why, Where, Who, When)
APM: WWWWW (What, Why, Where, Who, When)
 
Corso Object Oriented Analysis and Design
Corso Object Oriented Analysis and DesignCorso Object Oriented Analysis and Design
Corso Object Oriented Analysis and Design
 

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
  • 15. Classificazione dei Design Pattern DESIGN PATTERN CREAZIONALI STRUTTURALI COMPORTAMENTALI FACTORY ADAPTER FLYWEIGHT INTERPRETER METHOD ABSTRACT TEMPLATE BRIDGE PROXY FACTORY METHOD CHAIN OF BUILDER COMPOSITE FACADE RESPONSABIL. STATE PROTOTYPE DECORATOR COMMAND OBSERVER SINGLETON ITERATOR MEMENTO MEDIATOR www.javaportal.it | www.k-tech.it corsi@k-tech.it 15
  • 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