<aside>
템플릿 메서드 패턴 추가 설명
</aside>
템플릿 메서드 패턴의 핵심 아이디어
"알고리즘의 구조는 상위 클래스에서 정하고, 구체적인 내용은 하위 클래스에서 구현한다."
→ 전체적으로 수행할 일의 순서나 구조는 정해져 있지만, 그 과정의 특정 단계들이 구현에 따라 달라질 수 있들 때 사용 ⇒ 순서만 정하고, 세부적인 구현은 구상체들이 한다
주요 구성 요소
-
추상 클래스 (Abstract Class)
- 알고리즘의 뼈대가 되는 템플릿 메서드를 가진다
- 템플릿 메서드는 알고리즘의 각 단계를 나타내는 여러 메서드를 순서대로 호출
- 모든 하위 클래스가 공통으로 사용하는 로직은 일반 메서드로 구현
- 하위 클래스마다 다르게 구현될 부분은 추상 메서드나 훅 메서드로 남겨둔다
-
구체(구상) 클래스 (Concrete Class)
- 추상 클래스를 상속받는다
- 상위 클래스에서 정의한 추상 메서드를 구체적으로 구현한다
- 필요에 따라 **훅 메서드를 재정의(Override)**하여 동작을 추가하거나 변경한다
비유로 이해하기
Worker라는 추상 클래스가 있고, **PrepareForWork()**라는 템플릿 메서드가 있다
- WakeUp() : 모든 직장인 공통 → 일반 메서드
- Wash() : 모든 직장인 공통 → 일반
- GetDressed() : 사람마다 갈아 입는 옷이 다름 → 추상 메서드
- EatBreakfast() : 선택 사항 → 훅 메서드