Template Method — RexDac Academy

RexDac AcademyNote tehnice · Ajută să ai câteva noțiuni de bază
0%Note publicate citite · pe acest dispozitiv

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!") };
}