Template Method — RexDac Academy

RexDac AcademyNotas técnicas · Ayuda tener algunos conocimientos previos
0%Notas publicadas leídas · en este dispositivo

Principios y arquitectura / Patrones de diseño / De comportamiento

Template Method

Notas originales de SunDiaL · Ver fuente en inglés

El problema: Tienes claramente definidos los pasos de un algoritmo, pero su implementación varía. La solución: Definir los pasos que varían en métodos abstractos e implementarlos en clases derivadas.

public abstract class AnimalRewardRoutine
{
	public void Execute()
	{
		this.Follow();
		this.GivePaw();
		this.Speak(); //abstract
		this.Sit();
	}
	
	public void Follow() {/*follow owner*/}
	public void GivePaw() {/*shake owner's hand*/}
	public abstract void Speak();
	public void Sit() {/*wait for reward*/}
}

public class CatRewardRoutine : AnimalRewardRoutine
{
	public override void Speak(){ Console.WriteLine("Meow!") };
}

public class DogRewardRoutine : AnimalRewardRoutine
{
	public override void Speak(){ Console.WriteLine("Woof!") };
}