자격증/정보처리기사

[정보처리기사 실기 이론] 디자인 패턴 유형 | 생성패턴(Creational Pattern) 쉽게 이해하기

꾸행일기 2025. 7. 2. 17:22

✅ 생성 패턴 (Creational Patterns) - 5가지

객체를 어떻게 생성할지, 생성 과정을 유연하고 재사용 가능하게 설계하는 패턴

[빌프로 팩앱싱]

패턴 핵심 키워드
더 패턴
(Builder)
- 복합 객체 생성할 때 객체 생성 과정과 구현(표현방법)을 분리
- 동일한 객체 생성에서도 서로 다른 결과 만들 수 있음
- 여러 구성 요소를 조합하여 하나의 객체를 만듦
프로토타입 패턴
(Prototype)
원본 객체를 복제하여 객체 생성
토리메서드 패턴
(Factory Method)
- 객체 생성을 서브클래스로 위임
- 상위클래스에서 인터페이스 정의, 실제 생성서브 클래스가 담당
추상팩토리 메서드
( Abstract Factory Method)
- 구체적인 내용들을 숨기고 틀만 제공
- 서로 관련된(연관/의존) 객체들을 묶어 조합하여 인터페이스를 만들어주는 틀
- 팩토리 메서드보다 상위개념(팩토리들의 팩토리)
글톤
(Singleton)
- 하나의 객체 생성
- 어디서든 참조, But 동시에 참조 x
- 인스턴스 하나 보장, 메모리 낭비 최소화

[☞ 구조패턴 공부하러 가기

[☞ 행위패턴 공부하러 가기]


① 빌더 패턴 (Builder Pattern)

🧠 개념 요약

복잡한 객체를 만들 때, 객체 생성 과정을 단계별로 나눠서 구성할 수 있게 해주는 패턴.
다양한 구성 요소를 조립해 하나의 객체를 만드는 데 유용.

🎓 왜 쓰는가?

생성자에 너무 많은 파라미터가 있는 경우 코드가 복잡해짐.
→ 이걸 build() 단계로 쪼개서 가독성을 높이고, 다양한 설정 조합을 쉽게 만들 수 있음.

🔧 예시

User user = new UserBuilder()
    .setName("Karina")
    .setAge(24)
    .setEmail("karina@aespa.com")
    .build();

🧃 비유

"햄버거 주문할 때 옵션 고르기"

  • 번: 기본
  • 패티: 소고기 or 치킨
  • 추가: 치즈, 피클, 베이컨 등
    → 조합해서 나만의 햄버거 만들기

②  프로토타입 패턴 (Prototype Pattern)

🧠 개념 요약

기존 객체를 복제(clone) 해서 새로운 객체를 만들 때 사용하는 패턴.
특히, 객체를 만드는 비용이 클 때 유용.

🎓 왜 쓰는가?

객체 생성이 복잡하거나 무겁다면, 하나 만들어 놓고 복사(clone)해서 쓰는 게 효율적임.

🔧 예시

Document doc1 = new Resume("Karina", "Singer");
Document doc2 = doc1.clone(); // 내용은 같지만 다른 객체
 

🧃 비유

"디자인 파일 복붙하기"

  • 이력서 템플릿 하나 만들어놓고, 이름/내용만 살짝 바꿔서 다른 지원서 만들기

③ 팩토리 메서드 패턴 (Factory Method Pattern)

🧠 개념 요약

객체 생성 코드를 서브 클래스에게 위임하는 패턴.
상위 클래스는 객체 생성 방식을 몰라도 됨.

🎓 왜 쓰는가?

객체 생성 코드를 캡슐화해서, 호출하는 쪽에서 어떤 구체 클래스가 만들어지는지 몰라도 사용 가능.

🔧 예시

abstract class Dialog {
    abstract Button createButton();
}

class WindowsDialog extends Dialog {
    Button createButton() { return new WindowsButton(); }
}

🧃 비유

"자판기에서 음료 뽑기"

  • 버튼만 누르면 내부에서 어떤 브랜드의 음료를 꺼내줄지는 몰라도 결과는 동일하게 음료가 나옴

④ 추상 팩토리 패턴 (Abstract Factory Pattern)

🧠 개념 요약

서로 관련 있는 객체들을 묶음으로 생성할 수 있게 해주는 패턴.
팩토리들을 생산하는 "슈퍼 팩토리"

🎓 왜 쓰는가?

여러 개의 관련 객체를 같은 테마나 환경에 맞게 구성할 때 사용함.
(예: 다크 모드 테마에는 어두운 버튼/배경/글씨)

🔧 예시

interface GUIFactory {
    Button createButton();
    Checkbox createCheckbox();
}

class DarkModeFactory implements GUIFactory {
    Button createButton() { return new DarkButton(); }
    Checkbox createCheckbox() { return new DarkCheckbox(); }
}

🧃 비유

"스타일 세트로 제공되는 방 인테리어"

  • 북유럽 스타일: 테이블, 소파, 조명 모두 동일한 스타일로 구성됨

⑤ 싱글톤 패턴 (Singleton Pattern)

🧠 개념 요약

클래스의 객체를 오직 하나만 생성하도록 보장하고, 어디서든 그 인스턴스에 접근할 수 있게 함.

🎓 왜 쓰는가?

  • 전역 설정 관리
  • DB 연결 관리
  • 로그 시스템 등 "한 개만 존재해야 하는 객체"에 적합

🔧 예시

class Logger {
    private static Logger instance = new Logger();

    private Logger() {}

    public static Logger getInstance() {
        return instance;
    }
}

🧃 비유

"한 학교에 한 명뿐인 교장 선생님"

 

 

[☞ 구조패턴 공부하러 가기]

[☞ 행위패턴 공부하러 가기]