Ingegneria del Software
Introduzione al pattern…
1
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
isolare l’algoritmo
l’algoritmo di
di formattazione
formattazione del
del contenuto
contenuto
Come
dell’array
,
per
farlo
variare
in
modo
indipendente
dal
dell’array , per farlo variare in modo indipendente dal
resto
dell’implementazione
della
classe?
resto dell’implementazione della classe?
Ingegneria del Software - A.A. 2003/2004
Soluzione al problema introduttivo
Ingegneria del Software - A.A. 2003/2004
2
Presentazione del pattern
Strategy
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
3
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 il
comportamento 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
4
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
5
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
6
Domande?
Ingegneria del Software - A.A. 2003/2004
7
Scarica

Pattern Strategy