핵심 인사이트 (3줄 요약)

  • 생성 로직 캡슐화: 객체 생성 인터페이스는 부모가 정의하되, 실제 인스턴스화할 클래스는 자식 클래스(서브클래스)가 결정하게 위임한다.
  • OCP 원칙 준수: 기존 클라이언트 코드를 수정하지 않고도 새로운 타입의 객체를 쉽게 추가(확장)할 수 있는 유연한 구조를 제공한다.
  • DIP 구현: 클라이언트가 구체적인 클래스(Concrete Class)가 아닌 추상화된 인터페이스(Product)에 의존하도록 설계하여 결합도를 낮춘다.

Ⅰ. 개요 (Context & Background)

  • 정의: 객체를 만드는 공장(Factory) 역할을 하는 메서드를 두고, 이를 상속받은 하위 클래스에서 각기 다른 종류의 객체를 생성하도록 하는 패턴이다.
  • 배경: 직접 new를 사용하면 특정 클래스에 강하게 결합되므로, 생성 로직을 별도로 분리하여 코드의 유지보수성을 높이기 위해 사용한다.

Ⅱ. 아키텍처 및 핵심 원리 (Deep Dive)

  • 팩토리 메서드 패턴 구조 (UML)
+-----------------------+              +-----------------------+
|        Creator        |              |        Product        |
+-----------------------+              +-----------------------+
| + createProduct()     | <------------| (Interface/Abstract)  |
| # factoryMethod()     |              +-----------------------+
+-----------^-----------+                          ^
            | (Inheritance)                        | (Implementation)
+-----------v-----------+              +-----------v-----------+
|    ConcreteCreator    |              |    ConcreteProduct    |
+-----------------------+              +-----------------------+
| + factoryMethod()     |------------->|  return new Product() |
+-----------------------+              +-----------------------+
  • 작동 원리:
    1. Creator: 객체 생성을 위한 팩토리 메서드를 선언한다.
    2. ConcreteCreator: 실제 객체를 인스턴스화하여 반환하도록 메서드를 오버라이딩한다.
    3. Client: 구체적인 생성 로직을 알 필요 없이 Creator 인터페이스만 사용하여 결과물을 얻는다.

Ⅲ. 융합 비교 및 다각도 분석 (Comparison & Synergy)

비교 항목심플 팩토리 (Simple Factory)팩토리 메서드 (Factory Method)추상 팩토리 (Abstract Factory)
방식단일 클래스가 객체 생성 전담상속을 통해 생성 로직 분산객체 군(Family) 단위 일괄 생성
OCP 준수보통 (switch문 수정 필요)높음 (신규 클래스 추가 용이)매우 높음 (팩토리 교체 가능)
복잡도낮음중간높음

Ⅳ. 실무 적용 및 기술사적 판단 (Strategy & Decision)

  • 감리 주안점: 객체 생성 시 구체 클래스에 대한 분기 처리(if/else)가 남발되고 있지 않은지 확인하고, 팩토리 메서드를 통해 추상화되어 있는지 점검한다.
  • 기술사적 판단: 이 패턴은 자바의 프레임워크 설계(예: JDBC, Spring Bean Factory)에서 흔히 발견된다. 객체 생성 시점이 다르고 종류가 다양해질 가능성이 크다면, 직접 생성이 아닌 팩토리 메서드를 도입하여 '제어의 역전(IoC)'을 실천해야 한다.

Ⅴ. 기대효과 및 결론 (Future & Standard)

  • 기대효과: 객체 간 결합도 감소, 코드 재사용성 증대, 새로운 기능 추가 시 영향도(Side-effect) 최소화.
  • 결론: 팩토리 메서드 패턴은 객체지향 설계의 핵심인 '유연성'을 확보하는 가장 기초적이고 강력한 도구이며, 이를 통해 아키텍처의 지속 가능한 성장을 지원할 수 있다.

📌 관련 개념 맵 (Knowledge Graph)

  • 상위 개념: 생성 패턴(Creational Patterns)
  • 하위 개념: 정적 팩토리 메서드(Static Factory Method)
  • 연관 개념: 추상 팩토리(Abstract Factory), 템플릿 메서드 패턴, 제어의 역전(IoC)

👶 어린이를 위한 3줄 비유 설명

  • 내가 장난감 자동차를 주문하면, 공장(Creator)에서 어떤 자동차를 만들지 결정하는 거예요.
  • 주문자는 공장 내부가 어떻게 생겼는지 몰라도, 자동차가 완성되어 나오는 것만 알면 된답니다.
  • 새 모델 자동차가 나와도 공장 방식만 살짝 바꾸면 되니까 아주 편리해요!