Lezione 13 - Strategy
-
Upload
marco-bianchi -
Category
Education
-
view
892 -
download
0
Transcript of Lezione 13 - Strategy
Ingegneria del Software
Introduzione al pattern…
Ingegneria del Software - A.A. 2003/2004
Problema introduttivo
• La classe MyArray rappresenta vettori di numeri• Un suo metodo esegue la stampa dell’array secondo due
formati:– MathFormat (es. )– StandardFormat (es. )
• Questi formati potrebbero essere in futuro sostituiti da altri
Come isolare l’algoritmo di formattazione del contenuto dell’array , per farlo variare in modo indipendente dal
resto dell’implementazione della classe?
Come isolare l’algoritmo di formattazione del contenuto dell’array , per farlo variare in modo indipendente dal
resto dell’implementazione della classe?
Ingegneria del Software - A.A. 2003/2004
Soluzione al problema introduttivo
Presentazione del pattern Strategy
Ingegneria del Software - A.A. 2003/2004
Il pattern Strategy (1/7)
• Nome Strategy [GoF95]
• Synopsis Consente la definizione di una famiglia di algoritmi, li incapsula e li rende intercambiabili tra loro. Lo Strategy permette di cambiare l’algoritmo utilizzato indipendentemente dal client che lo usa.
• Context Cfr. esempio introduttivo
• Forces - Un programma deve fornire più varianti di un algoritmo o comportamento.
- Si vuole incapsulare “differenze comportamentali” in classi separate ed offrire un modo consistente di accesso a tali comportamenti.
Ingegneria del Software - A.A. 2003/2004
Il pattern Strategy (2/7)
Client
• Solution - Gli “attori” del pattern Iterator sono:
– Client: Classe che desidera ignorare “chi” e “come” implementerà un determinato algoritmo o comportamento
– AbstractStrategy: Contratto che definisce le regole di accesso alle classi che implementano l’algoritmo o comportamento sopra citato
– ConcreteStrategyX: Classi che implementano l’algoritmo o comportamento sopra citato
Ingegneria del Software - A.A. 2003/2004
Il pattern Strategy (3/7)
• Consequences Permette di determinare dinamicamente ilcomportamento di oggetti client eliminando cascate di if o switch
• Implementation -
• Java API usage Nel package java.util.zip:
Ingegneria del Software - A.A. 2003/2004
Il pattern Strategy (4/7)
• Code example
Ingegneria del Software - A.A. 2003/2004
Il pattern Strategy (5/7)
Ingegneria del Software - A.A. 2003/2004
Il pattern Strategy (6/7)
Ingegneria del Software - A.A. 2003/2004
Il pattern Strategy (7/7)
• Related Patterns
Adapter, Flyweight, Null Object, Template Method
Ingegneria del Software - A.A. 2003/2004
Domande?