공통적으로 일하는 것과 각기 다른 객체들간의 차이점을 나누는 것부터 시작한다.
Class의 Method에서 알고리즘의 골격을 만들어주고, 몇몇 단계를 sub-class에서 이용하는 방식.
옛날부터 내가 자주 사용하던 pattern. (잘 보면 그전까지 하던 일들에 대해서 용어를 붙이는 느낌이 든다.;;)
namespace TemplatePattern
{
public abstract class CaffeinBeverage
{
public void PrefareRecipe()
{
BoilWater();
Brew();
PourInCup();
AddCodiments();
}
protected abstract void Brew();
protected abstract void AddCodiments();
protected void BoilWater()
{
Console.WriteLine("Boil Water");
}
protected void PourInCup()
{
Console.WriteLine("Pour in Cup");
}
}
public class CoffeeBeverage : CaffeinBeverage
{
protected override void Brew()
{
Console.WriteLine("Brew Coffee Grinds");
}
protected override void AddCodiments()
{
Console.WriteLine("Add Sugar");
}
}
public class TeaBeverage : CaffeinBeverage
{
protected override void Brew()
{
Console.WriteLine("Brew Tea Grinds");
}
protected override void AddCodiments()
{
Console.WriteLine("Add Lemon");
}
}
}