3. Problema introduttivo (1/4)
• Durante la progettazione di un software amministrativo, si
prevede la presenza di una classe AddressPanel che riesce a
visualizzare correttamente gli indirizzi di tutte le classi che
contengono un indirizzo.
– Clienti
– Fornitori
– Commercialista
– Avvocato
– Impiegati
– …
Come garantire la coerenza nelle firme dei metodi?
Come garantire la coerenza nelle firme dei metodi?
Es. String getAddress()
Es. String getAddress()
Ingegneria del Software - A.A. 2003/2004
8. Il pattern Interface (1/4)
• Nome Interface [GoF95]
• Synopsis Rende una classe che usa dati e dai servizi offerti
da istanze di altre classi indipendente da queste
ultime. Ciò è possibile perché la classe in
questione accede alle istanze attraverso un
interfaccia.
• Context Cfr. esempio introduttivo
• Forces Quando si è costretti a richiedere a una o più
classi l’implementazione di uno o più metodi
Ingegneria del Software - A.A. 2003/2004
9. Il pattern Interface (2/4)
• Solution - Gli “attori” del
pattern Interface sono:
– Client
– IndirectionIF
Da Context… – Service
… a Solution
Ingegneria del Software - A.A. 2003/2004
10. Il pattern Interface (3/4)
• Consequences
- Permette la separazione tra la definizione dei metodi
e la loro implementazione
- Può rendere il programma più difficile da capire
Ingegneria del Software - A.A. 2003/2004
11. Il pattern Interface (4/4)
• Implementation Cfr. esempio introduttivo
• Java API usage Esercizio:
Riconoscere il pattern Interface in
java.io.FilenameFilter
• Code example Cfr. esempio introduttivo
• Related Patterns Spesso usato insieme al Delegation
Pattern
Ingegneria del Software - A.A. 2003/2004