Diferenzas entre revisións de «Template Method (padrón de deseño)»

m
Bot: Substitución da categoría "Patróns de deseño" pola categoría "Padróns de deseño"; cambios estética
(arranxiños)
m (Bot: Substitución da categoría "Patróns de deseño" pola categoría "Padróns de deseño"; cambios estética)
* Para controlar as extensións das subclases. O '''Método Modelo''' utiliza métodos especiais (''métodos de enganche'' ou ''hooks'') en certos puntos, sendo os únicos puntos que poden ser redefinidos e, por tanto, os únicos puntos onde é posible a extensión.
 
== Estrutura ==
Móstrase de seguido a estrutura que segue o patrón '''Método Modelo'''
[[Ficheiro:Estrutura MetodoPlantilla.png|centro|Estrutura do patrón ''Método Modelo'']]
 
== Participantes ==
* '''Clase Abstracta''': proporciona a definición dunha serie de operacións primitivas (normalmente abstractas) que implementan os pasos dun algoritmo e que serán definidas nas subclases.
 
* '''Clase Concreta''': implementa as operacións primitivas definidas na clase abstracta da cal herda, quedando así determinado o comportamento específico do algoritmo definido no método modelo, para cada subclase.
 
== Colaboracións ==
As clases concretas baséanse na clase abstracta para implementar a parte invariante do algoritmo.
 
== Consecuencias ==
* A utilización deste patrón é fundamental á hora de reutilizar código.
* Invértese o control: neste caso a superclase é a encargada de chamar ás operacións definidas nas subclases.
Cómpre destacar que os métodos modelo xogan un papel clave nas bibliotecas de clases xa que permiten extraer o comportamento común das clases da biblioteca. Outro uso común deste patrón dase na creación de sistemas de ''plugins'' grazas principalmente á utilización das anteriormente citadas ''operacións de enganche'' (''hooks'').
 
== Implementación ==
Á hora de proceder a implementar este patrón, resulta de interese ter en conta os seguintes detalles
* É recomendable declarar as operacións primitivas de tal xeito que só podan ser chamadas polo método modelo (protected se se traballa coa linguaxe de programación Java)
* Debe reducirse na medida do posible o número de operacións primitivas que van ser invocadas desde o método modelo. Deste xeito reducirase a complexidade das subclases e resultará menos tediosa a súa implementación.
 
== Exemplo de implementación ==
Amósase de seguido un exemplo de implementación do patrón Método Modelo. Nel inténtase ilustrar a grandes trazos o modo de desprazamento dun automóbil que, basicamente, pode simplificarse en: acelerar, cambiar de marcha e frear. O proceso de acelerar e frear pódese considerar que é idéntico en todos os automóbiles, sen embargo a forma de cambiar de marcha varia duns a outros segundo sexan autos con cambio manual ou autos con cambio automático.
Dacordo con esto, podemos considerar unha superclase ''Automobil'' na cal se define un método modelo ''Desprazar'' desde o cal se chama á operación primitiva ''CambiarMarcha'' que é implementada dun xeito na subclase "AutomobilManual", e doutro xeito na subclase "AutomobilAutomatico".
 
 
== Patróns relacionados ==
O patrón '''Método Modelo''' adoita relacionarse cos patróns de deseño
* '''[[Strategy (patrón de deseño)|Estratexia]]'''
* Os métodos de fabricación adoitan ser chamados desde os métodos modelo.
 
== Véxase tamén ==
=== Bibliografía ===
* {{cita libro |autor= E. Gamma, R. Helm, R. Johnson and J. Vlissides |título= Design Patterns:elements of reusable object-oriented software |ano= 1994 |publicación=Addison-Wesley}}
 
[[Categoría:PatrónsPadróns de deseño]]
393.002

edicións