코딩 공부/디자인패턴

팩토리 패턴

공부를 함 2024. 12. 3. 18:05

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;
    }
}

 

귀찮아서 아래 생략

나중에 기억 안 나고 헷갈리면 추가

'코딩 공부 > 디자인패턴' 카테고리의 다른 글

어댑터 패턴, 퍼사드 패턴  (1) 2024.12.04
커맨드 패턴  (0) 2024.12.04
데코레이터 패턴  (0) 2024.12.03
옵저버 패턴  (0) 2024.12.03
전략 패턴  (1) 2024.12.03