프로그래밍/C#

[C#] 디자인패턴 - Factory Method Pattern

흔한티벳여우 2023. 8. 15. 12:06
반응형

Factory Method Pattern은 객체를 생성하는 디자인 패턴 중 하나로, 객체 생성 로직을 하위 클래스로 위임함으로써 인스턴스화를 수행하는 클래스와 실제 생성되는 객체 클래스를 분리합니다. 이 패턴은 객체 생성에 관한 로직을 캡슐화하고, 새로운 타입의 객체 추가 시 코드의 변경을 최소화하는 데 도움을 줍니다.

 

기본 구조

Factory Method Pattern은 주로 다음의 두 가지 구성 요소로 이루어져 있습니다

  1. Creator: 객체를 생성하는 공통 인터페이스 또는 추상 클래스입니다.
  2. ConcreteCreator: 실제 객체를 생성하는 클래스입니다.

언제 사용해야 하는가?

  1. 객체 생성과 클래스 구현을 분리하고 싶을 때
  2. 시스템에 새로운 객체 타입을 추가할 때 코드 변경을 최소화하고 싶을 때
  3. 초기화 로직이 복잡하거나 클래스에 대한 정보를 숨기고 싶을 때

As-Is 예시 (Factory Method Pattern 사용 전)

public class Button
{
    public Button(string type)
    {
        if(type == "Windows")
        {
            // Windows 버튼 생성 로직
        }
        else if(type == "Mac")
        {
            // Mac 버튼 생성 로직
        }
        // ... 여러 버튼 타입들 ...
    }
}

To-Be 예시 (Factory Method Pattern 사용 후)

// Creator
public abstract class ButtonFactory
{
    public abstract Button CreateButton();
}

// ConcreteCreator
public class WindowsButtonFactory : ButtonFactory
{
    public override Button CreateButton()
    {
        // Windows 버튼 생성 로직
        return new WindowsButton();
    }
}

public class MacButtonFactory : ButtonFactory
{
    public override Button CreateButton()
    {
        // Mac 버튼 생성 로직
        return new MacButton();
    }
}

// 사용 예시
ButtonFactory factory = new WindowsButtonFactory();
Button btn = factory.CreateButton();

이렇게 Factory Pattern을 사용하면 객체 생성 로직을 캡슐화하여 유연성을 높일 수 있습니다.

 

 

반응형