Il pattern Template Method

Delineare le fase di un algoritmo con Template Method

L’idea di base del pattern Template Method è quella di delineare un algoritmo e la sequenza dei suoi passi, e delegare a delle sottoclassi il compito di specificarne alcuni passi. Questo pattern è di tipo comportamentale ed è così composto:

  1. Contesto:
    • Un algoritmo è applicabile a più tipi di dati;
    • L’algoritmo può essere scomposto in operazioni primitive. Le operazioni primitive possono essere diverse per ciascun tipo di dato;
    • L’ordine di applicazione delle operazioni primitive non dipende dal tipo di dato.
  2. Soluzione:
    • Definire una superclasse che abbia un metodo che realizza l’algoritmo e un metodo per ogni operazione primitiva;
    • Le operazioni primitive non sono implementate nella superclasse (metodi astratti), oppure sono implementate in modo generico;
    • Ridefinire in ogni sottoclasse i metodi che rappresentano operazioni primitive, ma non il metodo che rappresenta l’algoritmo.

Il pattern Template Method

Il Template Method si basa su una superclasse chiamata Superclass con un metodo composito algorthm e dei metodi primitivi, l’implementazione dei metodi primitivi sono di responsabilità della sottoclasse chiamate ConcreteClass.
In particolare, SuperClass definisce le operazioni primitive astratte che le sottoclassi specializzano per implementare l’algoritmo. Il pattern consente di definire la struttura dell’algoritmo, SuperClass definisce lo scheletro dell’algoritmo mentre ConcreteClass ne definiscono le operazioni primitive.
Le differenti ConcreteClass specializzano le operazioni primitive ed effettuare i sotto passi specifici dell’algoritmo.

Il pattern Template Method minimizza il numero delle operazioni che una sottoclasse deve specializzare favorendo un riuso del codice.

Per la lista completa di tutti i design pattern fate riferimento a questa pagina.

Pubblicato in Design Pattern, Guide, Java, Programmazione Taggato con: , , , , , , ,

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

*