팩토리 메서드 factory method 패턴 - 자바스크립트 예제

SW설계디자인패턴
읽는데 3분 소요
처음 쓰여진 날: 2025-09-02
마지막 수정일: 2025-09-02

요약

객체지향 프로그래밍의 핵심, 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나 다른 결제 관련 클래스를 수정할 필요가 없습니다.

이처럼 팩토리 메서드 패턴을 사용하면 변화에 유연하고 확장성 좋은 시스템을 만들 수 있습니다.

팩토리 메서드 패턴 중요 키워드

  • 상위 클래스에서 객체를 생성하는 인터페이스를 정의하고
  • 하위 클래스에서 인스턴스를 생성한다.
  • 인터페이스와 실제 객체를 생성하는 클래스를 분리한다.

정처기 기출 문제