Ingegneria del Software
Introduzione al pattern…
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
Come isolare l’algoritmo di formattazione del contenuto
 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
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
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
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?




Ingegneria del Software - A.A. 2003/2004

More Related Content

PDF
Master Thesis
PDF
Lezione 03 - Interface
PDF
Lezione 09 - Abstract Factory
PPT
Configurazione automatica di ambienti di testing per reti di calcolatori - te...
PDF
Lezione 11 - Visitor
PDF
Lezione 04 - Factory method
PDF
Lezione 08 - Iterator
PPTX
Join us to development New Career Future
Master Thesis
Lezione 03 - Interface
Lezione 09 - Abstract Factory
Configurazione automatica di ambienti di testing per reti di calcolatori - te...
Lezione 11 - Visitor
Lezione 04 - Factory method
Lezione 08 - Iterator
Join us to development New Career Future

Similar to Lezione 13 - Strategy (20)

PDF
Lezione 02 - Delegation
PDF
Lezione 07 - Decorator
PDF
Lezione 11 - Bridge
PDF
Lezione 00 - Introduzione ai Design Patterns
PDF
Catalogo corsi Emerasoft 2013 - 2014
ODP
Aspect Oriented Programming
PDF
DotNetToscana - Sessione TypeScript
PDF
Progettazione e realizzazione di un sistema software per il time logging
PDF
Lezione 06 - Façade
PPTX
Introduzione a TypeScript
PDF
Design pattern template method
PDF
Design patterns - parte 1
PDF
X-NERVal e Component NER
PPTX
PowerMock TDD User Group Milano
PDF
Implementazione di una Web App per la verifica dei requisiti progettuali del ...
PDF
Corso introduttivo di Design Pattern in Java per Elis - 1
PDF
Lezione 01 - Singleton
PPT
Un'architettura di riferimento per applicazioni enterprise
PDF
Definizione e sviluppo di un algoritmo genetico multiobiettivo per problemi d...
PDF
Lezione 12 - Observer
Lezione 02 - Delegation
Lezione 07 - Decorator
Lezione 11 - Bridge
Lezione 00 - Introduzione ai Design Patterns
Catalogo corsi Emerasoft 2013 - 2014
Aspect Oriented Programming
DotNetToscana - Sessione TypeScript
Progettazione e realizzazione di un sistema software per il time logging
Lezione 06 - Façade
Introduzione a TypeScript
Design pattern template method
Design patterns - parte 1
X-NERVal e Component NER
PowerMock TDD User Group Milano
Implementazione di una Web App per la verifica dei requisiti progettuali del ...
Corso introduttivo di Design Pattern in Java per Elis - 1
Lezione 01 - Singleton
Un'architettura di riferimento per applicazioni enterprise
Definizione e sviluppo di un algoritmo genetico multiobiettivo per problemi d...
Lezione 12 - Observer
Ad

Recently uploaded (11)

PDF
NGÂN HÀNG CÂU HỎI TÁCH CHỌN LỌC THEO CHUYÊN ĐỀ TỪ ĐỀ THI THỬ TN THPT 2025 TIẾ...
PDF
Critico_o_creativo_Approcci_al_testo_let.pdf
PDF
NGÂN HÀNG CÂU HỎI TÁCH CHỌN LỌC THEO CHUYÊN ĐỀ TỪ ĐỀ THI THỬ TN THPT 2025 TIẾ...
PDF
Presentazione di Chimica sui Coloranti Alimentari
PDF
NGÂN HÀNG CÂU HỎI TÁCH CHỌN LỌC THEO CHUYÊN ĐỀ TỪ ĐỀ THI THỬ TN THPT 2025 TIẾ...
PDF
PRESENTAZIONE PROGETTO CCCI IN ITALIANO .pdf
PDF
Libro per insegnare di Balboni: Lingue_e_linguaggi.pdf
PPTX
San Giovanni Eudes, 1601 – 1680, sacerdote e fondatore francese.pptx
PDF
Presentazione educazione finanziaria e informazione.pdf
PDF
NGÂN HÀNG CÂU HỎI TÁCH CHỌN LỌC THEO CHUYÊN ĐỀ TỪ ĐỀ THI THỬ TN THPT 2025 TIẾ...
PPTX
Santa Rosa da Lima, Vergine, Penitente, Terziaria Domenicana 1586-1617.pptx
NGÂN HÀNG CÂU HỎI TÁCH CHỌN LỌC THEO CHUYÊN ĐỀ TỪ ĐỀ THI THỬ TN THPT 2025 TIẾ...
Critico_o_creativo_Approcci_al_testo_let.pdf
NGÂN HÀNG CÂU HỎI TÁCH CHỌN LỌC THEO CHUYÊN ĐỀ TỪ ĐỀ THI THỬ TN THPT 2025 TIẾ...
Presentazione di Chimica sui Coloranti Alimentari
NGÂN HÀNG CÂU HỎI TÁCH CHỌN LỌC THEO CHUYÊN ĐỀ TỪ ĐỀ THI THỬ TN THPT 2025 TIẾ...
PRESENTAZIONE PROGETTO CCCI IN ITALIANO .pdf
Libro per insegnare di Balboni: Lingue_e_linguaggi.pdf
San Giovanni Eudes, 1601 – 1680, sacerdote e fondatore francese.pptx
Presentazione educazione finanziaria e informazione.pdf
NGÂN HÀNG CÂU HỎI TÁCH CHỌN LỌC THEO CHUYÊN ĐỀ TỪ ĐỀ THI THỬ TN THPT 2025 TIẾ...
Santa Rosa da Lima, Vergine, Penitente, Terziaria Domenicana 1586-1617.pptx
Ad

Lezione 13 - Strategy

  • 3. 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 Come isolare l’algoritmo di formattazione del contenuto 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
  • 4. Soluzione al problema introduttivo Ingegneria del Software - A.A. 2003/2004
  • 6. 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
  • 7. 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
  • 8. 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
  • 9. Il pattern Strategy (4/7) • Code example Ingegneria del Software - A.A. 2003/2004
  • 10. Il pattern Strategy (5/7) Ingegneria del Software - A.A. 2003/2004
  • 11. Il pattern Strategy (6/7) Ingegneria del Software - A.A. 2003/2004
  • 12. Il pattern Strategy (7/7) • Related Patterns Adapter, Flyweight, Null Object, Template Method Ingegneria del Software - A.A. 2003/2004