lezione 06 - façade
TRANSCRIPT
![Page 1: Lezione 06 - Façade](https://reader037.vdocuments.pub/reader037/viewer/2022103018/5598ee8f1a28ab6f118b4776/html5/thumbnails/1.jpg)
Ingegneria del Software
![Page 2: Lezione 06 - Façade](https://reader037.vdocuments.pub/reader037/viewer/2022103018/5598ee8f1a28ab6f118b4776/html5/thumbnails/2.jpg)
Introduzione al pattern…
![Page 3: Lezione 06 - Façade](https://reader037.vdocuments.pub/reader037/viewer/2022103018/5598ee8f1a28ab6f118b4776/html5/thumbnails/3.jpg)
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.
![Page 4: Lezione 06 - Façade](https://reader037.vdocuments.pub/reader037/viewer/2022103018/5598ee8f1a28ab6f118b4776/html5/thumbnails/4.jpg)
Ingegneria del Software - A.A. 2003/2004
Esempio introduttivo (2/2)
![Page 5: Lezione 06 - Façade](https://reader037.vdocuments.pub/reader037/viewer/2022103018/5598ee8f1a28ab6f118b4776/html5/thumbnails/5.jpg)
Presentazione del pattern Façade
![Page 6: Lezione 06 - Façade](https://reader037.vdocuments.pub/reader037/viewer/2022103018/5598ee8f1a28ab6f118b4776/html5/thumbnails/6.jpg)
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
![Page 7: Lezione 06 - Façade](https://reader037.vdocuments.pub/reader037/viewer/2022103018/5598ee8f1a28ab6f118b4776/html5/thumbnails/7.jpg)
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.
![Page 8: Lezione 06 - Façade](https://reader037.vdocuments.pub/reader037/viewer/2022103018/5598ee8f1a28ab6f118b4776/html5/thumbnails/8.jpg)
Ingegneria del Software - A.A. 2003/2004
Il pattern Façade (3/5)
Solution
![Page 9: Lezione 06 - Façade](https://reader037.vdocuments.pub/reader037/viewer/2022103018/5598ee8f1a28ab6f118b4776/html5/thumbnails/9.jpg)
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
![Page 10: Lezione 06 - Façade](https://reader037.vdocuments.pub/reader037/viewer/2022103018/5598ee8f1a28ab6f118b4776/html5/thumbnails/10.jpg)
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.
![Page 11: Lezione 06 - Façade](https://reader037.vdocuments.pub/reader037/viewer/2022103018/5598ee8f1a28ab6f118b4776/html5/thumbnails/11.jpg)
Ingegneria del Software - A.A. 2003/2004
Domande?