Skip to main content

[Design Pattern] 행동 패턴 2. 팩토리 메서드 (Factory Method)




팩토리 메서드 (Factory Method) #

팩토리 메서드

  • 객체를 만들 수 있는 인터페이스를 제공한다. 어떤 클래스의 객체를 만들지는 서브 클래스들이 결정한다.



개념적인 예시 #

abstract class Creator
{
    // 팩토리 메서드
    // 새로운 무언가를 만들고 싶다면 이것을 오버라이드하기만 하면 된다. (확장성)
    public abstract IProduct FactoryMethod();

    public string SomeOperation()
    {
        var product = FactoryMethod();
        var result = product.Operation();

        return result;
    }
}

class ConcreteCreator1 : Creator
{
    public override IProduct FactoryMethod()
    {
        // 서브 클래스가 어떤 클래스의 객체를 만들지 결정한다. 
        return new ConcreteProduct1(); 
    }
}

class ConcreteCreator2 : Creator
{
    public override IProduct FactoryMethod()
    {
        return new ConcreteProduct2();
    }
}

// 제품
public interface IProduct
{
    string Operation();
}

// 제품 1
class ConcreteProduct1 : IProduct
{
    public string Operation()
    {
        return "ConcreteProduct1";
    }
}

// 제품 2
class ConcreteProduct2 : IProduct
{
    public string Operation()
    {
        return "ConcreteProduct2";
    }
}

class Program
{
    static void Main(string[] args)
    {
        Creator creator = new ConcreteCreator1();
        
        Console.WriteLine(creator.SomeOperation()); // ConcreteProduct1
    }
}



References #