요약
- 템플릿 메소드 패턴
- Coffee 클래스와 Tea 클래스 추상화하기
- 추상화 방법 들여다보기
- 템플릿 메소드 패턴 알아보기
- 템플릿 메소드 패턴의 정의
- 템플릿 메소드 속 후크 알아보기
메모
Coffee 클래스와 Tea 클래스 추상화하기
- Coffee 와 Tea 의 상위 클래스인 CaffeineBeverage 를 추상화함.
- 공통으로 사용되는 메소드를 슈퍼 클래스에 정의함.
추상화 방법 들여다보기
- 커피와 홍차는 제조법이 똑같음.
- prepareRecipe 메서드를 추상화한다.
- 커피를 필터로 우려내는 것은 티백을 물에 넣어서 홍차를 우려내는 일과 별반 다르지 않음.
- 따라서, brew 메소드를 만들어서 똑같은 메소드를 쓰도록 함.
- 추상 클래스에 이 prepareRecipe 메소드를 사용함.
- CaffeineBeverage 슈퍼 클래스에 넣음.
템플릿 메소드 패턴 알아보기
- 지금까지, Coffee, Tea 에 대한 템플릿 메소드 패턴을 적용했다고 볼 수 있음.
- prepareRecipe() 는 템플릿 메소드임.
- 어떤 알고리즘의 템플릿 역할을 함.
- 여기서는 카페인 음료를 만드는 알고리즘의 템플릿임.
- 템플릿 메소드는 알고리즘의 각 단계를 정의하며, 서브클래스에서 일부 단계를 구현할 수 있도록 유도함.
템플릿 메소드 패턴의 정의
📍 템플릿 메소드 패턴(Template Method Pattern) : 알고리즘의 골격을 정의함. 템플릿 메소드를 사용하면 알고리즘의 일부 단계를 서브클래스에서 구현할 수 있으며, 알고리즘의 구조는 그대로 유지하면서 알고리즘의 특정 단계를 서브클래스에 재정의할 수도 있음.
- 간단히 말해서, 템플릿 메소드 패턴은 알고리즘의 템플릿을 만듦.
- 템플릿은 말그대로 메소드임.
- 일련의 단계로 알고리즘을 정의한 메소드.
템플릿 메소드 속 후크 알아보기
- 후크는 추상 클래스에서 선언되지만 기본적인 내용만 구현되어있거나, 아무코드도 들어있지 않은 메소드임.
- 서브 클래스는 다양한 위치에서 알고리즘에 끼어들 수 있음.
- 템플릿 메소드 패턴을 적용하다 보면 후크를 사용해야 하는 상황이 수없이 만나게 됨.
- 그때 어떤 식으로 후크를 사용할 수 있을지 직접 생각해보자.
댓글