Post

Template Method

In Design Patterns on marzo 28, 2010 by poyblog Messo il tag: ,

Intento:

Definisce lo scheletro di una algoritmo in una operazione e delega alcuni passaggi alle sottoclassi. Il pattern Template Method lascia alle sottoclassi la possibilità di ridefinire certi passaggi di un algoritmo senza cambiarne la struttura.

Applicabilità:

Il pattern in questione è da sfruttare nei seguenti casi:

  • per implementare le parti non variabili di un algoritmo una sola volta e lasciare alle sottoclassi la responsabilità di implementare i comportamenti che possono variare.
  • Quando il comportamento delle sottoclassi può essere fattorizzato e localizzato all’interno di una unica classe senza ripetizioni di codice (esempio di refactoring del tipo “refactoring to generalize”)
  • nel caso in cui si voglia controllare l’estensione delle sottoclassi. Si può creare un template che crea degli hook (letteralmente uncini o ganci) che possono essere utilizzati per permettere estensioni, solo dall’hook in poi.

Partecipanti:

  • AbstractClass → definisce operazioni primitive che le sottoclassi definiscono per implementare gli step dell’algoritmo; definisce anche un metodo template per definire l’ossatura dell’algoritmo.
  • ConcreteClass → implementa le operazioni primitive per fornire i passaggi dell’algoritmo secondo la specifica sottoclasse

Conseguenze:

L’utilizzo del pattern Template Method è una tecnica fondamentale per il riutilizzo del codice, in particolare per le librerie.

Il Pattern in questione chiama diversi tipi di operazioni, fra le quali:

  • operazioni concrete a livello di ConcreteClass
  • operazioni concrete a livello di AbstractClass
  • operazioni primitive
  • Factory Method
  • operazioni hook le quali forniscono comportamenti di default che possono essere estesi dalle sottoclassi se necessario.

E’ molto importante per il pattern specificare quali operazioni possono essere sovra-scritte (hook) e quali devono essere sovra-scritte (operazioni astratte)

Una Risposta a “Template Method”

  1. [...] Template Method [...]

Lascia un Commento

Fill in your details below or click an icon to log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Log Out / Modifica )

Foto Twitter

You are commenting using your Twitter account. Log Out / Modifica )

Foto di Facebook

You are commenting using your Facebook account. Log Out / Modifica )

Connecting to %s

Iscriviti

Get every new post delivered to your Inbox.