팩토리 메서드 factory method 패턴 - 자바스크립트 예제
SW설계디자인패턴
읽는데 3분 소요
처음 쓰여진 날: 2025-09-02
마지막 수정일: 2025-09-02
조회수: 391
요약
객체지향 프로그래밍의 핵심, GoF(Gang of Four) 디자인 패턴 중 생성 패턴인 싱글톤(Singleton), 팩토리 메서드(Factory Method), 빌더(Builder), 프로토타입(Prototype), 추상 팩토리(Abstract Factory)를 자바스크립트 코드와 함께 알아봅니다. 정처기 실기 대비를 위한 주관식 문제가 포함되어 있습니다.
팩토리 메서드 패턴 요약
| 패턴 종류 | 핵심 키워드 |
|---|---|
| 팩토리 메서드 (Factory Method) | 상위 클래스 인터페이스만 정의, 실제 생성은 서브클래스 담당 |

팩토리 메서드 (Factory Method) 패턴
팩토리 메서드 패턴은 객체 생성을 위한 인터페이스는 상위 클래스에서 정의하되, 실제로 어떤 클래스의 인스턴스를 만들지는 하위 클래스에서 결정하도록 하는 패턴입니다.
이 패턴을 사용하면 Creator(생성자)와 Product(제품)라는 두 가지 주요 구조가 나타납니다.
- Product: 생성될 객체의 공통 인터페이스를 정의합니다.
- Creator:
Product를 생성하는factoryMethod()를 정의합니다. 실제 생성 로직은 하위Creator가 담당합니다.
기본 구조
결제 시스템을 예로 들어보겠습니다. 다양한 결제 수단(카드, 페이팔 등)이 있지만, '결제 처리'라는 큰 흐름은 동일합니다.
javascript
코드 하이라이팅 중...
확장성
팩토리 메서드의 가장 큰 장점은 확장성입니다. 새로운 결제 수단 '카카오페이'를 추가해야 할 경우, 기존 코드를 전혀 수정할 필요가 없습니다. 🎉
javascript
코드 하이라이팅 중...
만약 팩토리 메서드를 사용하지 않고 단순 if/switch 분기문으로 처리했다면 어땠을까요?
javascript
코드 하이라이팅 중...
핵심 개념: OCP (Open-Closed Principle, 개방-폐쇄 원칙)
팩토리 메서드는 객체지향 설계 5원칙(SOLID) 중 하나인 OCP를 잘 보여줍니다.
- 기능 확장에는 열려있다 (Open): 새로운 결제 수단(
KakaoPay)을 쉽게 추가할 수 있습니다. - 코드 수정에는 닫혀있다 (Closed): 새로운 기능을 추가하기 위해 기존의
PaymentProcessor나 다른 결제 관련 클래스를 수정할 필요가 없습니다.
이처럼 팩토리 메서드 패턴을 사용하면 변화에 유연하고 확장성 좋은 시스템을 만들 수 있습니다.
팩토리 메서드 패턴 중요 키워드
- 상위 클래스에서 객체를 생성하는 인터페이스를 정의하고
- 하위 클래스에서 인스턴스를 생성한다.
- 인터페이스와 실제 객체를 생성하는 클래스를 분리한다.