Lezione 06 - Façade

11
Ingegneria del Software

Transcript of Lezione 06 - Façade

Page 1: Lezione 06 - Façade

Ingegneria del Software

Page 2: Lezione 06 - Façade

Introduzione al pattern…

Page 3: Lezione 06 - Façade

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

Ingegneria del Software - A.A. 2003/2004

Esempio introduttivo (2/2)

Page 5: Lezione 06 - Façade

Presentazione del pattern Façade

Page 6: Lezione 06 - 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

Page 7: Lezione 06 - Façade

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

Ingegneria del Software - A.A. 2003/2004

Il pattern Façade (3/5)

Solution

Page 9: Lezione 06 - Façade

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

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

Ingegneria del Software - A.A. 2003/2004

Domande?