1. Template Method 패턴이란?

Template Method 패턴은 알고리즘의 뼈대를 상위 클래스에서 정의하고, 구체적인 구현은 하위 클래스에 위임하는 디자인 패턴입니다. 핵심 아이디어는 "공통된 처리 흐름은 고정하되, 세부 구현만 바꾼다"는 데 있습니다.

사용 목적

  • 중복되는 처리 로직을 공통화
  • 알고리즘 구조는 고정하되, 세부 내용만 유연하게 확장
  • 코드의 일관성과 유지보수성 향상

2. 구조와 동작 원리

기본 구조

AbstractClass
 ├─ templateMethod()     ← 고정된 처리 순서 정의
 ├─ stepOne()            ← 추상 메서드 → 하위 클래스 구현
 └─ stepTwo()            ← hook 메서드 (옵션)

3. 어떤 문제를 해결하기 위해 자주 쓰일까?

Template Method 패턴은 다음과 같은 문제 상황에서 자주 사용됩니다:

1) 다수의 유사한 프로세스 흐름이 존재할 때

  • 예: 보고서 생성, 배치 작업, 외부 API 호출 등
  • 공통된 흐름이 있고, 일부 단계만 서로 다를 때 추상 클래스로 구조화

2) 타 시스템 연계/인터페이스 처리

  • 예: 외부 API 호출 시 RestTemplate, WebClient 등의 사용이 반복될 경우
  • 공통적인 요청 흐름(로그 남기기, 요청 생성, 응답 파싱 등)을 상위 클래스에서 고정하고, API별 세부 구현은 하위 클래스에서 처리
  • 공통 모듈화로 재사용성과 유지보수성 향상

3) 중복 제거 + 유지보수 단순화가 필요한 레거시 시스템 정리 시

  • 비슷한 로직이 퍼져 있는 코드를 통일된 상속 기반으로 재구성

핵심은 "공통된 처리 흐름을 고정하고, 변화가 필요한 지점만 유연하게 대체"하는 데 있습니다. 이 구조는 상위에 공통 추상 클래스를 만들고, 이를 상속받아 구체적인 동작을 구현하는 방식으로 이루어집니다.


4. 장단점

 

장점 단점
알고리즘 구조를 재사용 가능 상속 기반이라 유연성 제한 있음
로직 중복 최소화 하위 클래스 증가로 관리 부담 가능
일관된 흐름 보장 모든 단계가 추상화되면 복잡해질 수 있음

5. 실무 적용 팁

  • 같은 흐름의 처리 과정에서 다형성을 활용하고 싶을 때 고려
  • AbstractService, AbstractHandler 등으로 응용 가능

6. 마무리 요약

  • Template Method는 상위 클래스에서 전체 처리 흐름을 정의하고, 하위 클래스에서 각 단계의 로직을 세분화하는 패턴입니다.
  • 추상 클래스를 통해서 공통 흐름은 고정하고, 구체적인 처리만 커스터마이징하고 싶을 때 적합합니다.
  • 상속 구조가 강제되므로, 복잡한 상황에서는 전략 패턴과 조합하여 설계하는 것도 고려해야 합니다.
 

+ Recent posts