Mètode Template

De Viquipèdia
(S'ha redirigit des de: Template method)
Dreceres ràpides: navegació, cerca

A dins del marc de la programació orientada a objectes, el patró mètode Template (mètode plantilla o model) es un patró per solucionar problemes comuns de programari.

Resum.[modifica | modifica el codi]

El mètode Template és un patró de comportament que serveix per definir l'esquelet d'un algorisme, delegant a les seves subclasses alguns dels passos d'aquest algorisme. El mètode Template és utilitzat quan moltes classes han d'implementar un mateix comportament que només varia en algunes parts, també ens trobem amb la implementació de mètodes de ganxo (hooks), petits salts en el flux del programa que ens permeten realitzar consultes a les classes concretes, el patró template també utilitza el principi de Hollywood (o principi d'inversió): Don't call us, we'll call you.

Propòsit.[modifica | modifica el codi]

Permetre que certs passos d’un algorisme definit en una operació d’una superclasse, siguin re-definits en les subclasses sense necessitat de tenir que sobreescriure l’operació sencera.

Aplicabilitat.[modifica | modifica el codi]

La utilització del patró  Mètode plantilla es adequada en els següents casos:

  • Quan tenim un algorisme amb varis passos que no canvien, tal que canvien per les subclasses.
  • Per evitar la replicació de codi amb la generalització del comportament comú de varies subclasses en una única superclasse.
  • Per controlar les extensions de les subclasses. El mètodeTemplate utilitza mètodes especials( mètodes de ganxo o hooks) en alguns punts, senels únics punts que poden ser redefinits i per tan els únics punts on es possible la extensió.

Estructura.[modifica | modifica el codi]

Es mostra a continuació l'estructura que utilitza el patró Template:

TemplateEstructura.jpeg

Participants.[modifica | modifica el codi]

Classe Abstracta:[modifica | modifica el codi]

Proporciona la definició de una sèrie d’operacions primitives (normalment abstractes) que implementen els passos d’un algorisme i que seran definits en les subclasses. S’encarrega també de la implementació d’un mètode en el que s’invocaran entre altres les operacions primitives. Aquest mètode actua com plantilla, per això el nom del patró, definint la seqüència d’operacions d’un algorisme.

Classe Concreta:[modifica | modifica el codi]

Implementa les operacions primitives definides en la classe abstracta de la qual hereta, quedant determinat el comportament específic del algorisme definit en el mètode plantilla, per cada subclasse.

Col·laboracions.[modifica | modifica el codi]

Las classes concretes es basen en la classe abstracta per implementar la part invariant del algorisme.

Implementació.[modifica | modifica el codi]

Per implementar aquest patró es té que tenir en compte els següents detalls:

  • Es recomanable declarar les operacions primitives de tal manera que nomes puguin ser cridades per el mètode plantilla (protected si es treballa en Java).
  • Es té que reduir al màxim el numero de operacions primitives que seran invocades des del mètode plantilla. De aquesta manera es reduirà la complexitat de les subclasses i per tan la implementació serà mes fàcil.

Exemple d'implementació en Java.[modifica | modifica el codi]

Per implementar el mètode plantilla es vol simular el desplaçament d’un cotxe, que bàsicament es pot simplificar en: accelerar, canviar de marxa i frenar. El procés de accelerar i frenar es pot considerar que es idèntic en tots els cotxes, i ha diferencia en la forma canviar de marxa que varia d’uns als altres, els cotxes amb canvi manual i els de canvi automàtic.

Podem considerar una superclasse Cotxe en la que es defineix el mètode plantilla (Template Method) desplaçar, des del que es crida a l’operació primitiva canviarMarxa(), que es implementada d’una forma en la subclasse CotxeManual i de forma diferent en la subclasse CotxeAutomatic.

Patró Template method.PNG
ClasseCotxe.PNG
ClasseCotxeAutomatic.PNG
ClasseCotxeManual.PNG
ClassePrincipal.PNG

El resultat de l'execució del programa es el següent:

ResultatExecusio.PNG


Patrons relacionats.

El mètode plantilla es relaciona freqüentment amb els següents patrons de disseny:

  • Strategy Method.Els mètodes plantilla fan servir l’herencia per variar el comportament d’un algorisme. En el cas del patró Strategy es fa servir la delegació i es modifica el algorisme senser.
  • Factory Method.  Els mètodes Factory (fabricació) solen ser cridats des del mètode plantilla.

Bibliografia.[modifica | modifica el codi]

  • E. Gamma, R. Helm, R. Johnson and J. Vlissides (2002). «Patrones de diseño, Elementos de software orientado a objetos reutilizable». Addison-Wesley.