[Design Pattern] 템플릿 메서드

2025. 4. 4. 23:43·Design Pattern

템플릿 메서드 패턴이란?

템플릿 메서드 패턴은 부모 클래스(추상 클래스)가 알고리즘의 전체 구조(뼈대)를 정의하고,
구체적인 세부 단계는 자식 클래스에서 오버라이드하여 구현하도록 만드는 디자인 패턴이다.

 

즉, 전체 알고리즘 흐름은 부모가 정하고,
일부 단계만 자식 클래스가 커스터마이징할 수 있게 합니다.

 

공통된 알고리즘 구조는 유지하면서, 중복 코드는 줄이고 확장성은 확보할 수 있다.

 

다른 패턴과의 비교

템플릿 메서드 상속(Inheritance) 기반 알고리즘 흐름 유지 + 일부 단계만 오버라이드
전략(Strategy) 합성(Composition) 기반 동일한 작업을 다양한 전략으로 교체
상태(State) 합성(Composition) 기반 객체의 상태에 따라 동작이 달라짐

 

전략 패턴 vs 템플릿 메서드

  • 전략 패턴: 알고리즘 전체를 "전략 객체"로 대체
  • 템플릿 메서드: 알고리즘은 고정, "일부 단계"만 자식이 오버라이드

 

상태 패턴 vs 템플릿 메서드

  • 상태 패턴: 런타임에 상태 객체가 바뀌며 동작 변경
  • 템플릿 메서드: 컴파일타임에 구조를 공유하고, 단계별 구현만 다르게

 

템플릿 메서드 장단점

장점

  • 알고리즘 구조 재사용 → 코드 중복 최소화
  • 일부 단계만 오버라이드 → 다양한 동작 유연하게 확장
  • 유지보수 용이 → 알고리즘 변경 시 부모만 수정하면 됨

 

단점

  • 상속 의존성 증가 → 구조가 복잡해지면 결합도 높아짐
  • 단계가 많아지면 복잡도 증가
  • 리스코프 치환 원칙 위반 가능성 → 자식이 예상과 다른 행동을 할 수 있음

 

마무리

템플릿 메서드 패턴은 "변하지 않는 흐름 + 변할 수 있는 단계" 라는 분리가 중요한 핵심이다.
공통 알고리즘은 부모 클래스에, 구체적인 세부 로직은 자식 클래스에 위임함으로써,
유지보수성과 확장성, 재사용성을 모두 확보할 수 있다.

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

[Design Pattern] 팩토리 패턴 (Factory Pattern)  (0) 2025.04.08
[Design Pattern] 반복자 패턴 (Iterator Pattern)  (0) 2025.04.07
[Design Pattern] 상태 패턴 (State Pattern)  (0) 2025.04.03
[Design Pattern] 전략 패턴  (0) 2025.04.02
[Design Pattern] 디자인 패턴  (0) 2025.04.01
'Design Pattern' 카테고리의 다른 글
  • [Design Pattern] 팩토리 패턴 (Factory Pattern)
  • [Design Pattern] 반복자 패턴 (Iterator Pattern)
  • [Design Pattern] 상태 패턴 (State 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)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
DevColIn
[Design Pattern] 템플릿 메서드
상단으로

티스토리툴바