1. 개요

Factory 패턴은 객체 생성 로직을 별도의 클래스나 메서드로 분리하여, 객체 생성 과정을 더 유연하고 확장 가능하게 만드는 디자인 패턴입니다. ✨ 이 패턴은 객체 생성에 따른 의존성을 줄이고, 코드의 유지보수성을 높이는 데 매우 유용합니다.

언제 사용할까?

  • 클래스 생성 로직이 복잡할 때
  • 유사한 객체가 여러 종류일 때
  • 객체의 생성 방식이 변경될 가능성이 있을 때

2. 개념

Factory 패턴은 팩토리 메서드(Factory Method)를 통해 객체를 생성합니다. 객체 생성 과정을 캡슐화함으로써, 클라이언트가 생성된 객체의 내부 구조를 알 필요가 없게 만듭니다.

핵심 구성 요소

  1. Creator: 객체를 생성하는 역할을 담당 (보통 추상 클래스 또는 인터페이스)
  2. ConcreteCreator: 객체 생성 로직을 구체적으로 구현하는 클래스
  3. Product: 생성되는 객체의 인터페이스
  4. ConcreteProduct: 실제 생성된 객체

3. 예제

아래는 C#으로 간단히 구현한 예제입니다. 🎉

문제: 여러 종류의 피자를 만드는 애플리케이션

// Product
public interface IPizza
{
    void Prepare();
}

// ConcreteProduct
public class MargheritaPizza : IPizza
{
    public void Prepare()
    {
        Console.WriteLine("Preparing Margherita Pizza! 🍕");
    }
}

public class PepperoniPizza : IPizza
{
    public void Prepare()
    {
        Console.WriteLine("Preparing Pepperoni Pizza! 🍕");
    }
}

// Creator
public abstract class PizzaFactory
{
    public abstract IPizza CreatePizza();
}

// ConcreteCreator
public class MargheritaPizzaFactory : PizzaFactory
{
    public override IPizza CreatePizza()
    {
        return new MargheritaPizza();
    }
}

public class PepperoniPizzaFactory : PizzaFactory
{
    public override IPizza CreatePizza()
    {
        return new PepperoniPizza();
    }
}

// Client
class Program
{
    static void Main(string[] args)
    {
        PizzaFactory factory = new MargheritaPizzaFactory();
        IPizza pizza = factory.CreatePizza();
        pizza.Prepare();

        factory = new PepperoniPizzaFactory();
        pizza = factory.CreatePizza();
        pizza.Prepare();
    }
}

결과

Preparing Margherita Pizza! 🍕
Preparing Pepperoni Pizza! 🍕

4. 주의점

  • 추가적인 클래스 증가: Factory 패턴을 사용하면 클래스가 증가할 수 있으므로, 간단한 프로젝트에서는 오히려 복잡도를 높일 수 있습니다.
  • 추상화와 유연성: 객체 생성 로직이 복잡하거나 변동이 잦지 않다면 굳이 Factory 패턴을 사용하지 않아도 됩니다. 🚧

5. 결론

Factory 패턴은 객체 생성의 책임을 분리함으로써, 코드의 유연성과 재사용성을 높이는 강력한 도구입니다. ✨ 하지만 필요 이상으로 사용하면 코드가 과도하게 복잡해질 수 있으니, 상황에 맞게 적용하는 것이 중요합니다.

6. 관련 링크

 

Factory method pattern - Wikipedia

From Wikipedia, the free encyclopedia Object-oriented software design pattern In object-oriented programming, the factory method pattern is a design pattern that uses factory methods to deal with the problem of creating objects without having to specify th

en.wikipedia.org

다이어그램

반응형

+ Recent posts