SlideShare uma empresa Scribd logo
1 de 11
Baixar para ler offline
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

Mais conteúdo relacionado

Semelhante a Lezione 06 - Façade

Tesi Discussione
Tesi DiscussioneTesi Discussione
Tesi DiscussioneYeser Rema
 
DotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScriptDotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScriptSinergia Totale
 
Sistemi Context-aware: Esercitazione 3
Sistemi Context-aware: Esercitazione 3Sistemi Context-aware: Esercitazione 3
Sistemi Context-aware: Esercitazione 3Marco Loregian
 
Design patterns - parte 1
Design patterns - parte 1Design patterns - parte 1
Design patterns - parte 1Fabio Armani
 
Lezione 11 - Visitor
Lezione 11 - VisitorLezione 11 - Visitor
Lezione 11 - VisitorMarco Bianchi
 
Progetto SOD Davide Sito
Progetto SOD Davide SitoProgetto SOD Davide Sito
Progetto SOD Davide SitoDavide 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 enterpriseAlberto Lagna
 
Introduzione a TypeScript
Introduzione a TypeScriptIntroduzione a TypeScript
Introduzione a TypeScriptSinergia Totale
 
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 loggingVittoriano Muttillo
 
Introduzione al Domain Driven Design (DDD)
Introduzione al Domain Driven Design (DDD)Introduzione al Domain Driven Design (DDD)
Introduzione al Domain Driven Design (DDD)DotNetMarche
 
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 ARGiacomo Giovanni Delfini
 
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...Giacomo Delfini
 
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 WebDavide Bellettini
 
e-SUAP - General software architecture (Italiano)
e-SUAP - General software architecture (Italiano)e-SUAP - General software architecture (Italiano)
e-SUAP - General software architecture (Italiano)Sabino Labarile
 
Design Patterns - enterprise patterns (part I)
Design Patterns - enterprise patterns (part I)Design Patterns - enterprise patterns (part I)
Design Patterns - enterprise patterns (part I)Fabio Armani
 

Semelhante a 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
 

Último

Ticonzero news 148.pdf aprile 2024 Terza cultura
Ticonzero news 148.pdf aprile 2024 Terza culturaTiconzero news 148.pdf aprile 2024 Terza cultura
Ticonzero news 148.pdf aprile 2024 Terza culturaPierLuigi Albini
 
Esperimenti_laboratorio di fisica per la scuola superiore
Esperimenti_laboratorio di fisica per la scuola superioreEsperimenti_laboratorio di fisica per la scuola superiore
Esperimenti_laboratorio di fisica per la scuola superiorevaleriodinoia35
 
IL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla Cresima
IL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla CresimaIL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla Cresima
IL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla CresimaRafael Figueredo
 
lezione di fisica_I moti nel piano_Amaldi
lezione di fisica_I moti nel piano_Amaldilezione di fisica_I moti nel piano_Amaldi
lezione di fisica_I moti nel piano_Amaldivaleriodinoia35
 
Esame finale - riunione genitori 2024.pptx
Esame finale - riunione genitori 2024.pptxEsame finale - riunione genitori 2024.pptx
Esame finale - riunione genitori 2024.pptxfedericodellacosta2
 
Storia dell’Inghilterra nell’Età Moderna.pptx
Storia dell’Inghilterra nell’Età Moderna.pptxStoria dell’Inghilterra nell’Età Moderna.pptx
Storia dell’Inghilterra nell’Età Moderna.pptxOrianaOcchino
 
La produzione e la gestione degli Open Data
La produzione e la gestione degli Open DataLa produzione e la gestione degli Open Data
La produzione e la gestione degli Open DataGianluigi Cogo
 
La seconda guerra mondiale per licei e scuole medie
La seconda guerra mondiale per licei e scuole medieLa seconda guerra mondiale per licei e scuole medie
La seconda guerra mondiale per licei e scuole medieVincenzoPantalena1
 

Último (8)

Ticonzero news 148.pdf aprile 2024 Terza cultura
Ticonzero news 148.pdf aprile 2024 Terza culturaTiconzero news 148.pdf aprile 2024 Terza cultura
Ticonzero news 148.pdf aprile 2024 Terza cultura
 
Esperimenti_laboratorio di fisica per la scuola superiore
Esperimenti_laboratorio di fisica per la scuola superioreEsperimenti_laboratorio di fisica per la scuola superiore
Esperimenti_laboratorio di fisica per la scuola superiore
 
IL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla Cresima
IL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla CresimaIL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla Cresima
IL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla Cresima
 
lezione di fisica_I moti nel piano_Amaldi
lezione di fisica_I moti nel piano_Amaldilezione di fisica_I moti nel piano_Amaldi
lezione di fisica_I moti nel piano_Amaldi
 
Esame finale - riunione genitori 2024.pptx
Esame finale - riunione genitori 2024.pptxEsame finale - riunione genitori 2024.pptx
Esame finale - riunione genitori 2024.pptx
 
Storia dell’Inghilterra nell’Età Moderna.pptx
Storia dell’Inghilterra nell’Età Moderna.pptxStoria dell’Inghilterra nell’Età Moderna.pptx
Storia dell’Inghilterra nell’Età Moderna.pptx
 
La produzione e la gestione degli Open Data
La produzione e la gestione degli Open DataLa produzione e la gestione degli Open Data
La produzione e la gestione degli Open Data
 
La seconda guerra mondiale per licei e scuole medie
La seconda guerra mondiale per licei e scuole medieLa seconda guerra mondiale per licei e scuole medie
La seconda guerra mondiale per licei e scuole medie
 

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