[Design Pattern] 팩토리 패턴 (Factory Pattern)

2025. 4. 8. 23:44·Design Pattern

1. 팩토리 패턴

팩토리 패턴은 객체 생성 로직을 팩토리(인터페이스)로 캡슐화하여

클라이언트 코드가 특정 구채 클래스에 직접 의존하지 않도록 하는 생성 디자인 패턴을 가리킨다.

 

2. 팩토리 패턴은 언제 사용할까?

// 원본 코드
Document doc = new WordDocument();

// 수정할 코드
Document doc = new PDFDocument();

새로운 제품 클래스가 추가되어 기존 코드를 수정하고자 한다.

프로젝트 모든 코드에서 WordDocument 클래스 대신 PDFDocument 클래스를 사용하고자 한다면

일일이 찾아 관련 코드를 변경해줘야 한다.

 

기존 코드를 SOLID 원칙으로 바라본다면

개방 폐쇄 원칙 - OCP (기존 코드를 수정하지 않고 확장이 가능해야 한다.)

의존성 역전 원칙 - DIP (구체적인 클래스가 아닌 추상 클래스에 의존해야 한다.)

두 부분을 지키고 있지 않는 것을 확인할 수 있다.

 

그래서 팩토리 패턴을 통해

생성 부분을 추상화할 수 있다.

 

3. 팩토리 패턴 종류

  • Factory Method
  • Abstract Factory
  • SImple Factory

 

4. 팩토리 패턴의 장단점

장점

  • 객체 생성 로직을 캡슝화하여, 클라이언트 코드의 수정 범위를 최소화한다.
  • 팩토리만 교체하면, 생성되는 객체를 손쉽게 변경할 수 있다.

 

단점

  • 클래스와 구조가 다소 복잡해질 수 있다.
  • 분기 로직이 팩토리 쪽에 몰릴 수 있다.
  • 간단한 경우에는 new로 생성하는게 더 나을 수 있다.

 

5. 요약

객체 생성시 구현 클래스의 의존으로 코드가 복잡해진다면

팩토리 패턴을 사용하여 캡슐화하고 추상 클래스를 의존하게 하여 

구현 클래스의 교체를 유연하게 대처할 수 있다.

 

 

 

'Design Pattern' 카테고리의 다른 글

[Design Pattern] 프록시 패턴 (Proxy Pattern)  (0) 2025.04.10
[Design Pattern] 어댑터 패턴 (Adapter Pattern)  (0) 2025.04.09
[Design Pattern] 반복자 패턴 (Iterator Pattern)  (0) 2025.04.07
[Design Pattern] 템플릿 메서드  (0) 2025.04.04
[Design Pattern] 상태 패턴 (State Pattern)  (0) 2025.04.03
'Design Pattern' 카테고리의 다른 글
  • [Design Pattern] 프록시 패턴 (Proxy Pattern)
  • [Design Pattern] 어댑터 패턴 (Adapter Pattern)
  • [Design Pattern] 반복자 패턴 (Iterator Pattern)
  • [Design Pattern] 템플릿 메서드
DevColIn
DevColIn
복잡함을 단순하게
  • DevColIn
    심플한 코딩생활
    복잡함을 단순하게
  • 전체
    오늘
    어제
    • 전체보기 (223)
      • Unreal 부트캠프 (49)
        • TIL (34)
        • 사전캠프 (7)
        • 본캠프 (8)
      • Unrael (10)
        • 환경설정 (0)
        • Basic (19)
        • Component (5)
        • GAS (GameplayAbilitySystem) (3)
        • AI (2)
        • Implement (10)
        • UI (1)
        • Error (1)
        • Network (2)
        • Tip (1)
      • Level Design (5)
      • Math (1)
      • Design Pattern (16)
      • Computer Science (2)
        • Network (1)
        • Database (1)
      • Algorithm (79)
        • Basic (4)
        • Practice (74)
      • C++ (4)
        • Basic (4)
      • Tool (0)
      • Game (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    basic
    디자인패턴
    assetmanager
    gas
    GameplayEffect
    unreal
    KPT회고
    component
    알고리즘
    actor
    Algorithm
    레벨디자인
    unrealengine
    AI
    c++
    소프트 레퍼런신
    내일배움캠프
    본캠프
    Animation
    Design Pattern
    Implement
    하드 레퍼런싱
    액터
    DesignPattern
    Til
    게임동기화
    사전캠프
    디자인 패턴
    퀘스트
    tsoftobjectptr
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
DevColIn
[Design Pattern] 팩토리 패턴 (Factory Pattern)
상단으로

티스토리툴바