Principii și arhitectură / Șabloane de proiectare / Comportamentale
Template Method
Note originale de SunDiaL · Vezi sursa în engleză
Problema: Ai pașii unui algoritm clar stabiliți, dar implementarea lor variază. Soluția: Definește pașii care variază în metode abstracte și implementează-i în clasele derivate.
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!") };
}