Patrón Template Method en C#: Guía Completa

Introducción: Receta fija

Template Method define el esqueleto de un algoritmo y deja algunos pasos a las subclases. El flujo general se mantiene constante.

Esto garantiza consistencia en procesos repetibles, con flexibilidad en los detalles.

Receta
Prompt: Recipe card with steps, minimal clean design.

1. Naturaleza: Ciclos repetibles

Los ciclos del día siempre siguen el mismo patrón, aunque cambien detalles.

El orden es fijo (amanecer, día, atardecer, noche), pero las condiciones específicas varían, igual que en un template.

Ciclo
Prompt: Day-night cycle illustration, soft gradient style.

2. Mundo Real: Recetas de cocina

La receta define pasos fijos, pero ingredientes o tiempos pueden variar.

El chef respeta la estructura, pero personaliza detalles: exactamente lo que hacen las subclases en Template Method.

Cocina
Prompt: Minimal kitchen scene with recipe book, warm light.

3. Implementación en C#: Código Paso a Paso

public abstract class Bebida
{
    public void Preparar()
    {
        HervirAgua();
        AgregarIngrediente();
        Servir();
    }

    protected void HervirAgua() => Console.WriteLine("Hervir agua");
    protected void Servir() => Console.WriteLine("Servir");
    protected abstract void AgregarIngrediente();
}

public class Te : Bebida
{
    protected override void AgregarIngrediente() => Console.WriteLine("Agregar té");
}

4. Template Method vs Strategy

Template Method fija el flujo. Strategy intercambia algoritmos completos.

Si necesitas un esqueleto común con pasos variables, Template Method es ideal; si el algoritmo completo cambia, usa Strategy.

5. Diagrama UML

UML Template Method
Prompt: UML diagram of Template Method pattern, clean vector layout.
Flujo de pasos
Prompt: Step-by-step flow diagram, minimal infographic style.

⚠️ Cuándo NO Usar Template Method

  • Si el flujo cambia demasiado o no hay pasos fijos.
  • Si cada caso requiere un algoritmo totalmente distinto.

💪 Ejercicio

Crea una clase abstracta para exportar reportes con pasos comunes y variantes CSV/JSON.

Conclusión

Template Method garantiza consistencia con flexibilidad controlada. Es útil para procesos repetibles con variantes bien delimitadas.