에릭 프리먼 님의 "헤드퍼스트 디자인 패턴" 책을 정리한 포스팅 입니다
1. 템플릿 메서드 패턴
- 알고리즘의 각 단계를 정의하며, 서브클래스에서 일부 단계를 구현할 수 있도록 유도하는 패턴
장점
- 알고리즘의 구조가 유지됨
- 알고리즘의 특정 단계를 서브클래스에서 재정의 할 수 있음
- 후크를 사용하여 실행 조건을 서브클래스에서 재정의할 수 있음
2. CaffeineBeverage
public abstract class CaffeineBeverage {
final void prepareRecipe() {
boilWater();
brew();
pourInCup();
if (customerWantsCondiments()) addCondiments();
}
abstract void brew();
abstract void addCondiments();
void boilWater() { /* ... */ }
void pourInCup() { /* ... */ }
boolean customerWantsCondiments() { return true; }
}
public class Tea extends CaffeineBeverage {
public void brew() { System.out.println("찻잎 우려내는 중"); }
public void addCondiments() { System.out.println("레몬을 추가하는 중"); }
}
3. 예시
Arrays.sort()
AbstractList
- ArrayList, LinkedList의 추상클래스
- subList()를 위해 get(), size()를 구현해야 함
'Java > Design Pattern' 카테고리의 다른 글
[헤드퍼스트 디자인 패턴] 9-2. 컴포지트 패턴 (0) | 2024.12.18 |
---|---|
[헤드퍼스트 디자인 패턴] 9-1. 반복자 패턴 (0) | 2024.12.18 |
[헤드퍼스트 디자인 패턴] 7-2. 퍼사드 패턴 (0) | 2024.12.17 |
[헤드퍼스트 디자인 패턴] 7-1. 커맨드 패턴 (0) | 2024.12.17 |
[헤드퍼스트 디자인 패턴] 6. 커맨드 패턴 (0) | 2024.12.17 |