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는 상위 클래스에서 전체 처리 흐름을 정의하고, 하위 클래스에서 각 단계의 로직을 세분화하는 패턴입니다.
- 추상 클래스를 통해서 공통 흐름은 고정하고, 구체적인 처리만 커스터마이징하고 싶을 때 적합합니다.
- 상속 구조가 강제되므로, 복잡한 상황에서는 전략 패턴과 조합하여 설계하는 것도 고려해야 합니다.
'Back-End > Java & Spring' 카테고리의 다른 글
Adapter 패턴 : 호환되지 않는 인터페이스를 연결하는 설계 전략 (0) | 2025.05.11 |
---|---|
Strategy 패턴과 활용 사례: 로직 분기 문 줄이기 (0) | 2025.05.11 |
Proxy 패턴 개념&Spring AOP (0) | 2025.05.11 |
Factory 패턴 개념 (0) | 2025.05.11 |
싱글톤 패턴 개념& Spring Bean Scope (0) | 2025.05.11 |