책너두 (헤드 퍼스트 디자인 패턴) 24일차 (~334p)

요약

  • 템플릿 메소드 패턴
    • Coffee 클래스와 Tea 클래스 추상화하기
    • 추상화 방법 들여다보기
    • 템플릿 메소드 패턴 알아보기
    • 템플릿 메소드 패턴의 정의
    • 템플릿 메소드 속 후크 알아보기

메모

Coffee 클래스와 Tea 클래스 추상화하기

  • Coffee 와 Tea 의 상위 클래스인 CaffeineBeverage 를 추상화함.
    • 공통으로 사용되는 메소드를 슈퍼 클래스에 정의함.

추상화 방법 들여다보기

  • 커피와 홍차는 제조법이 똑같음.
    • prepareRecipe 메서드를 추상화한다.
    • 커피를 필터로 우려내는 것은 티백을 물에 넣어서 홍차를 우려내는 일과 별반 다르지 않음.
    • 따라서, brew 메소드를 만들어서 똑같은 메소드를 쓰도록 함.
  • 추상 클래스에 이 prepareRecipe 메소드를 사용함.
    • CaffeineBeverage 슈퍼 클래스에 넣음.

템플릿 메소드 패턴 알아보기

  • 지금까지, Coffee, Tea 에 대한 템플릿 메소드 패턴을 적용했다고 볼 수 있음.
  • prepareRecipe() 는 템플릿 메소드임.
    • 어떤 알고리즘의 템플릿 역할을 함.
    • 여기서는 카페인 음료를 만드는 알고리즘의 템플릿임.
  • 템플릿 메소드는 알고리즘의 각 단계를 정의하며, 서브클래스에서 일부 단계를 구현할 수 있도록 유도함.

템플릿 메소드 패턴의 정의

📍 템플릿 메소드 패턴(Template Method Pattern) : 알고리즘의 골격을 정의함. 템플릿 메소드를 사용하면 알고리즘의 일부 단계를 서브클래스에서 구현할 수 있으며, 알고리즘의 구조는 그대로 유지하면서 알고리즘의 특정 단계를 서브클래스에 재정의할 수도 있음.
  • 간단히 말해서, 템플릿 메소드 패턴은 알고리즘의 템플릿을 만듦.
    • 템플릿은 말그대로 메소드임.
    • 일련의 단계로 알고리즘을 정의한 메소드.

템플릿 메소드 속 후크 알아보기

  • 후크는 추상 클래스에서 선언되지만 기본적인 내용만 구현되어있거나, 아무코드도 들어있지 않은 메소드임.
    • 서브 클래스는 다양한 위치에서 알고리즘에 끼어들 수 있음.
  • 템플릿 메소드 패턴을 적용하다 보면 후크를 사용해야 하는 상황이 수없이 만나게 됨.
    • 그때 어떤 식으로 후크를 사용할 수 있을지 직접 생각해보자.

댓글

Designed by JB FACTORY