디자인패턴 - GoF 생성패턴 5가지

🔥 매회 출제 (priority 3)

🌱 왜 배우나

빵을 만들 때마다 밀가루와 이스트를 직접 계량한다고 생각해 보자. 레시피가 바뀌면 빵집마다 일일이 뛰어다니며 고쳐야 한다. 객체(Object, 데이터와 기능을 묶어 둔 프로그램 속 덩어리)를 만들 때도 똑같은 일이 벌어진다. “만드는 방법”을 코드 곳곳에 적어 두면 바꿀 때마다 지옥이 열린다. 생성 패턴(Creational Pattern)은 “객체를 어떻게 만들 것인가”를 한 곳에 모아 두는 검증된 해법이다. 덕분에 나중에 바꿀 일이 생겨도 그 한 곳만 손대면 된다.

📖 핵심 개념

디자인 패턴이란 프로그래밍에서 반복되는 문제에 대한 검증된 설계 해법이다. GoF(Gang of Four, 디자인 패턴을 정리한 네 명의 저자)가 모은 23가지 패턴은 세 분류로 나뉜다.

  • 생성(Creational) 5개 — 객체 만들기
  • 구조(Structural) 7개 — 객체 조립하기
  • 행위(Behavioral) 11개 — 객체 간 소통하기

생성 패턴은 “객체를 어떻게 만드는가”를 사용 코드로부터 떼어 낸다. 어떤 구체 클래스를 쓰는지 감춰 두고, 필요할 때 바꿔 끼울 수 있는 유연성을 제공한다. 시험에서는 5가지 이름과 각각의 핵심 목적을 정확히 구분하는 것이 포인트다.

🔍 시각화

  GoF 디자인패턴 분류 (23개)
  ┌─────────────────────────────────────────┐
  │  생성 (5개)  │  구조 (7개)  │  행위 (11개) │
  └─────────────────────────────────────────┘

  생성패턴 5가지와 핵심 키워드:

  ┌──────────────────┐
  │ Abstract Factory │──▶ 관련 객체 "군(family)" 통째로 생성
  ├──────────────────┤
  │ Builder          │──▶ 복잡한 객체를 "단계별로" 조립
  ├──────────────────┤
  │ Factory Method   │──▶ 생성을 "하위 클래스에 위임"
  ├──────────────────┤
  │ Prototype        │──▶ 기존 객체를 "복제(clone)"
  ├──────────────────┤
  │ Singleton        │──▶ 인스턴스 "딱 하나만" 보장
  └──────────────────┘

↔️ 이웃 개념 구분

  • Abstract Factory vs Factory Method: Abstract Factory는 서로 관련된 객체 묶음(family)을 통째로 만든다. Factory Method는 객체 하나의 생성을 하위 클래스에 맡긴다. “제품군 vs 단일 제품”이 핵심이다.
  • Builder vs Prototype: Builder는 복잡한 객체를 단계별로 새로 조립한다. Prototype은 이미 있는 객체를 복사해 새 객체를 만든다. “조립 vs 복제”로 구분된다.

🔑 핵심 용어

  • Abstract Factory(추상 팩토리): 서로 관련된 객체군을 만드는 틀(인터페이스)을 제공한다. 구체 팩토리를 바꾸면 제품군 전체가 바뀐다.
  • Builder(빌더): 복잡한 객체의 “만드는 절차”와 “최종 모습”을 분리한다. 같은 절차로 다른 결과물을 만들 수 있다.
  • Factory Method(팩토리 메서드): 객체 만들기를 하위 클래스(서브클래스)에 맡긴다. 상위 클래스는 “무엇을 만들지”의 틀만 정의한다.
  • Prototype(프로토타입): 기존 객체를 복제(clone)해 새 객체를 만든다. 처음부터 만드는 비용이 클 때 유용하다.
  • Singleton(싱글턴): 클래스의 인스턴스(Instance, 실제로 만들어진 객체)를 딱 하나만 두고, 어디서든 그 하나에 접근하게 한다.

✅ 스스로 가르쳐보기

이 내용을 처음 듣는 친구에게 설명한다면, 먼저 “디자인 패턴”이 뭔지 한 문장으로 정의해 보세요. 그리고 생성 패턴 5가지 이름을 나열하면서 각각이 해결하는 문제를 본인의 말로 풀어 보세요. 가능하면 빵집, 자동차 공장 같은 일상 비유 하나씩을 붙여 보는 것이 좋습니다.

체크포인트:

  • 5가지 패턴 이름을 빠짐없이 나열할 수 있는가?
  • 각 패턴이 해결하는 핵심 문제를 한 줄로 말할 수 있는가?
  • Abstract Factory와 Factory Method의 차이를 짚을 수 있는가?
  • 생성 패턴이 GoF 3분류 중 어디에 속하는지 언급했는가?

🎯 기출 포인트

암기법: “AB를 FPS로 만든다” (Abstract Factory, Builder, Factory Method, Prototype, Singleton). 생성 5개, 구조 7개(어댑터·브리지·컴포지트·데코레이터·퍼사드·플라이웨이트·프록시), 행위 11개. 패턴 이름과 분류를 정확히 매칭하는 문제가 자주 나온다.

🔗 연결 개념