핵심 인사이트 (3줄 요약)
- 생성 로직 캡슐화: 객체 생성 인터페이스는 부모가 정의하되, 실제 인스턴스화할 클래스는 자식 클래스(서브클래스)가 결정하게 위임한다.
- OCP 원칙 준수: 기존 클라이언트 코드를 수정하지 않고도 새로운 타입의 객체를 쉽게 추가(확장)할 수 있는 유연한 구조를 제공한다.
- DIP 구현: 클라이언트가 구체적인 클래스(Concrete Class)가 아닌 추상화된 인터페이스(Product)에 의존하도록 설계하여 결합도를 낮춘다.
Ⅰ. 개요 (Context & Background)
- 정의: 객체를 만드는 공장(Factory) 역할을 하는 메서드를 두고, 이를 상속받은 하위 클래스에서 각기 다른 종류의 객체를 생성하도록 하는 패턴이다.
- 배경: 직접
new를 사용하면 특정 클래스에 강하게 결합되므로, 생성 로직을 별도로 분리하여 코드의 유지보수성을 높이기 위해 사용한다.
Ⅱ. 아키텍처 및 핵심 원리 (Deep Dive)
+-----------------------+ +-----------------------+
| Creator | | Product |
+-----------------------+ +-----------------------+
| + createProduct() | <------------| (Interface/Abstract) |
| # factoryMethod() | +-----------------------+
+-----------^-----------+ ^
| (Inheritance) | (Implementation)
+-----------v-----------+ +-----------v-----------+
| ConcreteCreator | | ConcreteProduct |
+-----------------------+ +-----------------------+
| + factoryMethod() |------------->| return new Product() |
+-----------------------+ +-----------------------+
- 작동 원리:
- Creator: 객체 생성을 위한 팩토리 메서드를 선언한다.
- ConcreteCreator: 실제 객체를 인스턴스화하여 반환하도록 메서드를 오버라이딩한다.
- 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)에서 어떤 자동차를 만들지 결정하는 거예요.
- 주문자는 공장 내부가 어떻게 생겼는지 몰라도, 자동차가 완성되어 나오는 것만 알면 된답니다.
- 새 모델 자동차가 나와도 공장 방식만 살짝 바꾸면 되니까 아주 편리해요!