#Webinar 06 Associazioni - Quarta lezione: Esplorare 25/02/2015
Lezione 06 - Façade
-
Upload
marco-bianchi -
Category
Education
-
view
1.408 -
download
0
Transcript of Lezione 06 - Façade
Ingegneria del Software
Introduzione al pattern…
Ingegneria del Software - A.A. 2003/2004
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 relazioni e l’ordine con il quale istanziarle.
Il client deve conoscere tutte altre classi, le loro relazioni e l’ordine con il quale istanziarle.
Ingegneria del Software - A.A. 2003/2004
Esempio introduttivo (2/2)
Presentazione del pattern Façade
Ingegneria del Software - A.A. 2003/2004
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 clientspostando la complessità all’interno della Façade.
- Non è necessario che la Façade rappresenti unabarriera impenetrabile per i client. Al contrario, può essere conveniente che la stessa Façadepreveda 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 sitrovano 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 usageLa classe java.net.URL è un esempio di Façade.Esercizio: individuare quali classi sono dietro la Façade.
• Code exampleCfr. sorgenti che implementano l’esempio introduttivo.
• Related PatternsInterface, Law of Demeter.
Ingegneria del Software - A.A. 2003/2004
Domande?