Descarga la aplicación para disfrutar aún más
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.
Compartir