SlideShare ist ein Scribd-Unternehmen logo
1 von 11
Downloaden Sie, um offline zu lesen
Ingegneria del Software
Introduzione al pattern…
Esempio introduttivo (1/2)


• Si consideri la seguente organizzazione delle classi utili per la
  creazione e l’invio di messaggi di posta elettronica:




      Il client deve conoscere tutte altre classi, le loro
     Il client deve conoscere tutte altre classi, le loro
          relazioni e l’ordine con il quale istanziarle.
         relazioni e l’ordine con il quale istanziarle.
                     Ingegneria del Software - A.A. 2003/2004
Esempio introduttivo (2/2)




    Ingegneria del Software - A.A. 2003/2004
Presentazione del pattern
         Façade
Il pattern Façade (1/5)


•   Nome       Façade [GoF95]

•   Synopsis   Il pattern Façade semplifica l’utilizzo di un
               insieme di oggetti relazionati tra loro,
               introducendo un nuovo oggetto che funge da
               unica “facciata” per comunicare con i primi.

               GoF sintetizza il pattern Façade in questo modo:

               “Provide a unified interface to a set of interfaces
                in a subsystem. Façade defines a higher-level
                interface that makes the subsystem easier to
                use”

•   Context    Cfr. esempio introduttivo

                     Ingegneria del Software - A.A. 2003/2004
Il pattern Façade (2/5)


•   Forces   - Un client è costretto a conoscere la struttura e
               le relazioni di un numero significativo di classi.
               Questo aumenta la complessità del client.

             - Si introduce una Façade tra le classi ed i client
               spostando la complessità all’interno della
               Façade.

             - Non è necessario che la Façade rappresenti una
               barriera impenetrabile per i client. Al contrario,
               può essere conveniente che la stessa Façade
               preveda la restituzione dei reference degli
               oggetti per permetterne un accesso diretto ai
               client.



                   Ingegneria del Software - A.A. 2003/2004
Il pattern Façade (3/5)

Solution




             Ingegneria del Software - A.A. 2003/2004
Il pattern Façade (4/5)



•   Consequences

       - Il client non è tenuto a conoscere le classi che si
         trovano dietro la Façade

       - Si disaccoppia il codice del client dagli oggetti che si
         trovano dietro la Façade, facilitandone la
         manutenzione

       - Il client hanno comunque la possibilità di accedere
         direttamente agli oggetti dietro la Façade



                     Ingegneria del Software - A.A. 2003/2004
Il pattern Façade (5/5)


•   Implementation
       - Nel caso in cui si voglia tenere il client all’oscuro del
         funzionamento di un sottosistema , le classi che
         rappresentano il sottosistema possono essere
         implementate come inner class della Façade.

•   Java API usage
       La classe java.net.URL è un esempio di Façade.
       Esercizio: individuare quali classi sono dietro la Façade.

•   Code example
        Cfr. sorgenti che implementano l’esempio introduttivo.

•   Related Patterns
        Interface, Law of Demeter.


                      Ingegneria del Software - A.A. 2003/2004
Domande?




Ingegneria del Software - A.A. 2003/2004

Weitere ähnliche Inhalte

Ähnlich wie Lezione 06 - Façade

Tesi Discussione
Tesi DiscussioneTesi Discussione
Tesi Discussione
Yeser Rema
 
DotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScriptDotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScript
Sinergia Totale
 
Lezione 11 - Visitor
Lezione 11 - VisitorLezione 11 - Visitor
Lezione 11 - Visitor
Marco Bianchi
 
Progetto SOD Davide Sito
Progetto SOD Davide SitoProgetto SOD Davide Sito
Progetto SOD Davide Sito
Davide Sito
 
Un'architettura di riferimento per applicazioni enterprise
Un'architettura di riferimento per applicazioni enterpriseUn'architettura di riferimento per applicazioni enterprise
Un'architettura di riferimento per applicazioni enterprise
Alberto Lagna
 
Introduzione a TypeScript
Introduzione a TypeScriptIntroduzione a TypeScript
Introduzione a TypeScript
Sinergia Totale
 
Sviluppo di una piattaforma CLIENT/SERVER per attività didattiche basate su AR
Sviluppo di una piattaforma CLIENT/SERVER per attività didattiche basate su ARSviluppo di una piattaforma CLIENT/SERVER per attività didattiche basate su AR
Sviluppo di una piattaforma CLIENT/SERVER per attività didattiche basate su AR
Giacomo Giovanni Delfini
 

Ähnlich wie Lezione 06 - Façade (20)

Tesi Discussione
Tesi DiscussioneTesi Discussione
Tesi Discussione
 
DotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScriptDotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScript
 
Sistemi Context-aware: Esercitazione 3
Sistemi Context-aware: Esercitazione 3Sistemi Context-aware: Esercitazione 3
Sistemi Context-aware: Esercitazione 3
 
Design patterns - parte 1
Design patterns - parte 1Design patterns - parte 1
Design patterns - parte 1
 
Lezione 11 - Visitor
Lezione 11 - VisitorLezione 11 - Visitor
Lezione 11 - Visitor
 
Progetto SOD Davide Sito
Progetto SOD Davide SitoProgetto SOD Davide Sito
Progetto SOD Davide Sito
 
Spring - Ecosistema
Spring - EcosistemaSpring - Ecosistema
Spring - Ecosistema
 
Un'architettura di riferimento per applicazioni enterprise
Un'architettura di riferimento per applicazioni enterpriseUn'architettura di riferimento per applicazioni enterprise
Un'architettura di riferimento per applicazioni enterprise
 
Tesi di Laurea
Tesi di LaureaTesi di Laurea
Tesi di Laurea
 
Introduzione a TypeScript
Introduzione a TypeScriptIntroduzione a TypeScript
Introduzione a TypeScript
 
Cac Es3 2009
Cac Es3 2009Cac Es3 2009
Cac Es3 2009
 
Progettazione e realizzazione di un sistema software per il time logging
Progettazione e realizzazione di un sistema software per il time loggingProgettazione e realizzazione di un sistema software per il time logging
Progettazione e realizzazione di un sistema software per il time logging
 
Introduzione al Domain Driven Design (DDD)
Introduzione al Domain Driven Design (DDD)Introduzione al Domain Driven Design (DDD)
Introduzione al Domain Driven Design (DDD)
 
Lezione 11 - Bridge
Lezione 11 - BridgeLezione 11 - Bridge
Lezione 11 - Bridge
 
Sviluppo di una piattaforma CLIENT/SERVER per attività didattiche basate su AR
Sviluppo di una piattaforma CLIENT/SERVER per attività didattiche basate su ARSviluppo di una piattaforma CLIENT/SERVER per attività didattiche basate su AR
Sviluppo di una piattaforma CLIENT/SERVER per attività didattiche basate su AR
 
Sviluppo di una piattaforma Client/Server per attività didattiche basate su R...
Sviluppo di una piattaforma Client/Server per attività didattiche basate su R...Sviluppo di una piattaforma Client/Server per attività didattiche basate su R...
Sviluppo di una piattaforma Client/Server per attività didattiche basate su R...
 
Framework di supporto allo sviluppo di applicazioni Web
Framework di supporto allo sviluppo di applicazioni WebFramework di supporto allo sviluppo di applicazioni Web
Framework di supporto allo sviluppo di applicazioni Web
 
e-SUAP - General software architecture (Italiano)
e-SUAP - General software architecture (Italiano)e-SUAP - General software architecture (Italiano)
e-SUAP - General software architecture (Italiano)
 
Design Patterns - enterprise patterns (part I)
Design Patterns - enterprise patterns (part I)Design Patterns - enterprise patterns (part I)
Design Patterns - enterprise patterns (part I)
 
Microservices
MicroservicesMicroservices
Microservices
 

Kürzlich hochgeladen

Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptxScienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
lorenzodemidio01
 
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxNicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
lorenzodemidio01
 
case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....
giorgiadeascaniis59
 

Kürzlich hochgeladen (19)

Quadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceoQuadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceo
 
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptxLorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
 
Descrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptxDescrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptx
 
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptxLorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
 
Aristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptxAristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptx
 
Scrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibileScrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibile
 
Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................
 
LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................
 
Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.
 
discorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptxdiscorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptx
 
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptx
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptxProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptx
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptx
 
descrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptxdescrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptx
 
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptxScienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
 
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxNicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
 
Presentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione CivicaPresentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione Civica
 
Tosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptxTosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptx
 
case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....
 
Lorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptxLorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptx
 
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptxLorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
 

Lezione 06 - Façade

  • 3. Esempio introduttivo (1/2) • Si consideri la seguente organizzazione delle classi utili per la creazione e l’invio di messaggi di posta elettronica: Il client deve conoscere tutte altre classi, le loro Il client deve conoscere tutte altre classi, le loro relazioni e l’ordine con il quale istanziarle. relazioni e l’ordine con il quale istanziarle. Ingegneria del Software - A.A. 2003/2004
  • 4. Esempio introduttivo (2/2) Ingegneria del Software - A.A. 2003/2004
  • 6. Il pattern Façade (1/5) • Nome Façade [GoF95] • Synopsis Il pattern Façade semplifica l’utilizzo di un insieme di oggetti relazionati tra loro, introducendo un nuovo oggetto che funge da unica “facciata” per comunicare con i primi. GoF sintetizza il pattern Façade in questo modo: “Provide a unified interface to a set of interfaces in a subsystem. Façade defines a higher-level interface that makes the subsystem easier to use” • Context Cfr. esempio introduttivo Ingegneria del Software - A.A. 2003/2004
  • 7. Il pattern Façade (2/5) • Forces - Un client è costretto a conoscere la struttura e le relazioni di un numero significativo di classi. Questo aumenta la complessità del client. - Si introduce una Façade tra le classi ed i client spostando la complessità all’interno della Façade. - Non è necessario che la Façade rappresenti una barriera impenetrabile per i client. Al contrario, può essere conveniente che la stessa Façade preveda la restituzione dei reference degli oggetti per permetterne un accesso diretto ai client. Ingegneria del Software - A.A. 2003/2004
  • 8. Il pattern Façade (3/5) Solution Ingegneria del Software - A.A. 2003/2004
  • 9. Il pattern Façade (4/5) • Consequences - Il client non è tenuto a conoscere le classi che si trovano dietro la Façade - Si disaccoppia il codice del client dagli oggetti che si trovano dietro la Façade, facilitandone la manutenzione - Il client hanno comunque la possibilità di accedere direttamente agli oggetti dietro la Façade Ingegneria del Software - A.A. 2003/2004
  • 10. Il pattern Façade (5/5) • Implementation - Nel caso in cui si voglia tenere il client all’oscuro del funzionamento di un sottosistema , le classi che rappresentano il sottosistema possono essere implementate come inner class della Façade. • Java API usage La classe java.net.URL è un esempio di Façade. Esercizio: individuare quali classi sono dietro la Façade. • Code example Cfr. sorgenti che implementano l’esempio introduttivo. • Related Patterns Interface, Law of Demeter. Ingegneria del Software - A.A. 2003/2004