Logo Studenta

Qué es el patrón de diseño Template Method y cuál es su uso

¡Estudia con miles de materiales!

Vista previa del material en texto

¿Qué es el patrón de diseño Template Method y cuál es su uso en PHP? 
 
El patrón de diseño "Template Method" (Método Plantilla) es un patrón de comportamiento que 
define la estructura básica de un algoritmo en una clase base, pero deja que las subclases 
implementen algunos pasos específicos del algoritmo. De esta manera, el patrón permite que 
diferentes subclases proporcionen diferentes implementaciones de los pasos individuales sin 
cambiar la estructura general del algoritmo. 
 
El patrón "Template Method" se basa en el principio de "inversión de control" (IoC) y es útil cuando 
tienes un algoritmo que sigue una secuencia fija de pasos, pero esos pasos pueden variar según el 
contexto o el tipo de objeto que se está procesando. 
 
El uso del patrón "Template Method" en PHP sigue estos pasos: 
 
1. Crear una clase abstracta que actúe como la clase base del algoritmo. En esta clase, define un 
método "Template Method" (generalmente llamado `templateMethod` o similar) que representa la 
estructura del algoritmo y se compone de llamadas a métodos abstractos y métodos concretos. 
Estos métodos abstractos deben ser implementados por las subclases. 
 
2. Define los métodos abstractos en la clase base que representan los pasos individuales del 
algoritmo que pueden variar en las subclases. 
 
3. Crea subclases que hereden de la clase base y proporcionen implementaciones específicas para 
los métodos abstractos. 
 
Veamos un ejemplo de cómo implementar el patrón "Template Method" en PHP: 
 
```php 
abstract class CaffeineBeverage 
{ 
 final public function prepareRecipe() 
 { 
 $this->boilWater(); 
 $this->brew(); 
 $this->pourInCup(); 
 $this->addCondiments(); 
 } 
 
 abstract protected function brew(); 
 
 abstract protected function addCondiments(); 
 
 protected function boilWater() 
 { 
 echo "Boiling water..." . PHP_EOL; 
 } 
 
 protected function pourInCup() 
 { 
 echo "Pouring into cup..." . PHP_EOL; 
 } 
} 
 
class Coffee extends CaffeineBeverage 
{ 
 protected function brew() 
 { 
 echo "Brewing coffee..." . PHP_EOL; 
 } 
 
 protected function addCondiments() 
 { 
 echo "Adding sugar and milk..." . PHP_EOL; 
 } 
} 
 
class Tea extends CaffeineBeverage 
{ 
 protected function brew() 
 { 
 echo "Steeping the tea..." . PHP_EOL; 
 } 
 
 protected function addCondiments() 
 { 
 echo "Adding lemon..." . PHP_EOL; 
 } 
} 
``` 
 
En este ejemplo, la clase `CaffeineBeverage` es la clase base que define el algoritmo general para 
preparar bebidas con cafeína. Los métodos `brew()` y `addCondiments()` son abstractos y deben ser 
implementados por las subclases `Coffee` y `Tea`. El método `prepareRecipe()` es el "Template 
Method" que representa la secuencia de pasos y llama a los métodos concretos y abstractos según 
sea necesario. 
 
Ahora, cuando se crea una instancia de `Coffee` o `Tea` y se llama a `prepareRecipe()`, se ejecutará 
el algoritmo correspondiente a cada bebida con cafeína y se seguirá la secuencia de pasos definida 
en la clase base, pero con las implementaciones específicas de cada subclase. 
 
El patrón "Template Method" permite definir la estructura general de un algoritmo en una clase 
base y extenderlo mediante subclases que implementen partes específicas del algoritmo. Esto 
promueve el reúso de código y facilita la gestión de comportamientos comunes en una jerarquía de 
clases.

Continuar navegando