728x90
템플릿 메소드 패턴에 대해서 알아보자!
728x90
템플릿 메소드 패턴(Template Method Pattern)은 행동(Behavioral) 디자인 패턴 중 하나로,
알고리즘의 뼈대를 상위 클래스에서 정의하고, 일부 단계는 하위 클래스에서 구현하도록 만드는 구조.
✅ 핵심 개념 요약
상위 클래스: 알고리즘 전체 구조(순서)를 정의
하위 클래스: 구체적인 단계만 재정의 (hook method 또는 abstract method)
의도: 공통 로직 재사용 + 유연한 확장 제공
✅ 구조 예시 (Java 스타일)
abstract class AbstractTask {
// 템플릿 메소드 (알고리즘 전체 흐름 정의)
public final void execute() {
start();
doWork();
end();
}
protected void start() {
System.out.println("작업 시작");
}
protected abstract void doWork(); // 하위 클래스가 구현
protected void end() {
System.out.println("작업 종료");
}
}
- 하위클래스
class FileTask extends AbstractTask {
@Override
protected void doWork() {
System.out.println("파일 처리 중...");
}
}
- 사용
AbstractTask task = new FileTask();
task.execute();
- 결과
작업 시작
파일 처리 중...
작업 종료
✅ 언제 쓰면 좋은가?
상황 | 이유 |
알고리즘의 흐름은 같지만, 일부 단계만 다를 때 | 상속을 통해 단계별 맞춤 구현 |
코드 중복 없이 공통 프로세스 재사용하고 싶을 때 | 상위 클래스가 흐름 통제 |
후속 확장이 빈번한 경우 | 새로운 단계만 추가 가능 (OCP 만족) |
✅ 실무 예시
도메인 | 예시 |
Spring Security | AbstractAuthenticationProcessingFilter |
테스트 프레임워크 | JUnit의 @Before, @After + @Test 흐름 |
템플릿엔진 | HTML 렌더링 흐름 제어 |
게임 개발 | 캐릭터의 공격/방어/죽음 흐름 구조화 |
✅ 장점 vs 단점
장점 | 단점 |
코드 재사용성 향상 | 상속 기반이므로 구조가 고정됨 |
알고리즘 구조 명확화 | 하위 클래스 수가 많아질 수 있음 |
개방/폐쇄 원칙(OCP) 만족 | 유연성보다 구성이 우선될 수 있음 |
✅ 요약
더보기
템플릿 메소드 패턴 =
"알고리즘의 흐름은 고정하고, 중간 단계만 자유롭게 바꿀 수 있도록" 만드는 상속 기반 설계 패턴.
728x90
'개발 > ETC' 카테고리의 다른 글
NoSQL DB 종류 알아보기 (39) | 2025.05.18 |
---|---|
결합도 공부 (67) | 2025.05.08 |
이진 트리 공부 (74) | 2025.04.30 |
페이지 교체 알고리즘 공부 (191) | 2025.04.28 |
단일 프로세스 시스템 알아보기! (41) | 2025.04.16 |