fbpx
Wikipedia

Patrón de método de la plantilla

En ingeniería de software, el patrón de método de la plantilla es un patrón de diseño de comportamiento que define el esqueleto de programa de un algoritmo en un método, llamado método de plantilla, el cual difiere algunos pasos a las subclases.[1]​ Permite redefinir ciertos pasos seguros de un algoritmo sin cambiar la estructura del algoritmo.[2]​ Este uso de "plantilla" no está relacionado con plantillas de C++.

Método de plantilla: UML esquema de clase.

Uso

 
Método de plantilla en LePUS3 (leyenda el 14 de marzo de 2018 en Wayback Machine.)

El método de plantilla está diseñado para marcos, donde cada uno implementa las partes invariables de la arquitectura de un ámbito, dejando "placeholders" para personalizar las opciones. Esto es un ejemplo de inversión de control. Algunas razones por la que se utiliza el método de plantilla son:[3]

  • Dejar que las subclases que se implementan (a través del método primordial) tengan un comportamiento que puede variar.
  • Evitar duplicación en el código: la estructura general de flujo de trabajo, está implementada una vez en el algoritmo de clase abstracta, y variaciones necesarias son implementadas en cada de las subclases.
  • Control en qué punto(s) la subclassing está permitida. En oposición a una sencilla sobrecarga polimórfica, donde el método de base sería enteramente reescrito, permitiendo un cambio radical en el flujo. Sólo los detalles específicos del flujo se pueden cambiar.

Ejemplo en Java

/**  * An abstract class that is common to several games in  * which players play against the others, but only one is  * playing at a given time.  */ abstract class Game { /* Hook methods. Concrete implementation may differ in each subclass*/ protected int playersCount; abstract void initializeGame(); abstract void makePlay(int player); abstract boolean endOfGame(); abstract void printWinner(); /* A template method : */ public final void playOneGame(int playersCount) { this.playersCount = playersCount; initializeGame(); int j = 0; while (!endOfGame()) { makePlay(j); j = (j + 1) % playersCount; } printWinner(); } } //Now we can extend this class in order  //to implement actual games: class Monopoly extends Game { /* Implementation of necessary concrete methods */ void initializeGame() { // Initialize players // Initialize money } void makePlay(int player) { // Process one turn of player } boolean endOfGame() { // Return true if game is over  // according to Monopoly rules } void printWinner() { // Display who won } /* Specific declarations for the Monopoly game. */ // ... } class Chess extends Game { /* Implementation of necessary concrete methods */ void initializeGame() { // Initialize players // Put the pieces on the board } void makePlay(int player) { // Process a turn for the player } boolean endOfGame() { // Return true if in Checkmate or  // Stalemate has been reached } void printWinner() { // Display the winning player } /* Specific declarations for the chess game. */ // ... } 


Véase también

Referencias

  1. Gamma, Erich; Helm, Richard; Johnson, Ralph; Vlissides, John (1994). «Template Method». Design Patterns. Addison-Wesley. pp. 325–330. ISBN 0-201-63361-2. 
  2. Freeman, Eric; Freeman, Elisabeth; Kathy, Sierra; Bert, Bates (2004). Hendrickson, Mike; Loukides, Mike, eds. Head First Design Patterns (paperback) 1. O'REILLY. p. 289. ISBN 978-0-596-00712-6. Consultado el 12 de septiembre de 2012. 
  3. «Template Method Design Pattern». Source Making - teaching IT professional. Consultado el 12 de septiembre de 2012. «Template Method is used prominently in frameworks. » 

Enlaces externos

  • Trabajando con Clases de Plantilla en PHP 5
  • (una lengua de modelización formal)
  • Patrón de Diseño de Método de plantilla
  • Ejemplo de Método de la plantilla
  •   Datos: Q771778
  •   Multimedia: Template method / Q771778

patrón, método, plantilla, ingeniería, software, patrón, método, plantilla, patrón, diseño, comportamiento, define, esqueleto, programa, algoritmo, método, llamado, método, plantilla, cual, difiere, algunos, pasos, subclases, permite, redefinir, ciertos, pasos. En ingenieria de software el patron de metodo de la plantilla es un patron de diseno de comportamiento que define el esqueleto de programa de un algoritmo en un metodo llamado metodo de plantilla el cual difiere algunos pasos a las subclases 1 Permite redefinir ciertos pasos seguros de un algoritmo sin cambiar la estructura del algoritmo 2 Este uso de plantilla no esta relacionado con plantillas de C Metodo de plantilla UML esquema de clase Indice 1 Uso 2 Ejemplo en Java 3 Vease tambien 4 Referencias 5 Enlaces externosUso Editar Metodo de plantilla en LePUS3 leyenda Archivado el 14 de marzo de 2018 en Wayback Machine El metodo de plantilla esta disenado para marcos donde cada uno implementa las partes invariables de la arquitectura de un ambito dejando placeholders para personalizar las opciones Esto es un ejemplo de inversion de control Algunas razones por la que se utiliza el metodo de plantilla son 3 Dejar que las subclases que se implementan a traves del metodo primordial tengan un comportamiento que puede variar Evitar duplicacion en el codigo la estructura general de flujo de trabajo esta implementada una vez en el algoritmo de clase abstracta y variaciones necesarias son implementadas en cada de las subclases Control en que punto s la subclassing esta permitida En oposicion a una sencilla sobrecarga polimorfica donde el metodo de base seria enteramente reescrito permitiendo un cambio radical en el flujo Solo los detalles especificos del flujo se pueden cambiar Ejemplo en Java Editar An abstract class that is common to several games in which players play against the others but only one is playing at a given time abstract class Game Hook methods Concrete implementation may differ in each subclass protected int playersCount abstract void initializeGame abstract void makePlay int player abstract boolean endOfGame abstract void printWinner A template method public final void playOneGame int playersCount this playersCount playersCount initializeGame int j 0 while endOfGame makePlay j j j 1 playersCount printWinner Now we can extend this class in order to implement actual games class Monopoly extends Game Implementation of necessary concrete methods void initializeGame Initialize players Initialize money void makePlay int player Process one turn of player boolean endOfGame Return true if game is over according to Monopoly rules void printWinner Display who won Specific declarations for the Monopoly game class Chess extends Game Implementation of necessary concrete methods void initializeGame Initialize players Put the pieces on the board void makePlay int player Process a turn for the player boolean endOfGame Return true if in Checkmate or Stalemate has been reached void printWinner Display the winning player Specific declarations for the chess game Vease tambien EditarHerencia informatica GRASP Patron de adaptadorReferencias Editar Gamma Erich Helm Richard Johnson Ralph Vlissides John 1994 Template Method Design Patterns Addison Wesley pp 325 330 ISBN 0 201 63361 2 Freeman Eric Freeman Elisabeth Kathy Sierra Bert Bates 2004 Hendrickson Mike Loukides Mike eds Head First Design Patterns paperback 1 O REILLY p 289 ISBN 978 0 596 00712 6 Consultado el 12 de septiembre de 2012 Template Method Design Pattern Source Making teaching IT professional Consultado el 12 de septiembre de 2012 Template Method is used prominently in frameworks Enlaces externos EditarTrabajando con Clases de Plantilla en PHP 5 Patron de metodo de la plantilla en UML y en LePUS3 una lengua de modelizacion formal Diferencia entre adaptador y metodo de plantilla patron Patron de Diseno de Metodo de plantilla Ejemplo de Metodo de la plantilla Datos Q771778 Multimedia Template method Q771778 Obtenido de https es wikipedia org w index php title Patron de metodo de la plantilla amp oldid 132437229, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos