Factory Pattern
#region Pizza
public class Pizza
{
public void Prepare() { }
public void Bake() { }
public void Cut() { }
public void Box() { }
}
public class VeggiePizza : Pizza{}
public class ClamPizza : Pizza{}
public class PepperoniPizza : Pizza{}
public class CheesePizza : Pizza{}
#endregion
public class SimplePizzaFactory
{
public Pizza CreatePizza(string type)
{
Pizza pizza = null;
if (type == "cheese") pizza = new CheesePizza();
else if (type == "pepperoni") pizza = new PepperoniPizza();
else if (type == "clam") pizza = new ClamPizza();
else if (type == "veggie") pizza = new VeggiePizza();
return pizza;
}
}
public class PizzaStore
{
SimplePizzaFactory factory;
public PizzaStore(SimplePizzaFactory factory) { this.factory = factory; }
public Pizza PizzaOrder(string type)
{
Pizza pizza = factory.CreatePizza(type); //new 연산자 대신 팩토리 객체의 메소드를 사용함 : 구상 클래스 인스턴스를 만들 필요 없음
pizza.Prepare();
pizza.Bake();
pizza.Cut();
pizza.Box();
return pizza;
}
}
귀찮아서 아래 생략
나중에 기억 안 나고 헷갈리면 추가