잊지 않겠습니다.

공통적으로 일하는 것과 각기 다른 객체들간의 차이점을 나누는 것부터 시작한다. 

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

    }

  }

Posted by Y2K
,