A Blackhole

Template Method Pattern

2018-05-25

Template Method Pattern

Template method defines the skeleton of an algorithm as an abstract class, allowing its subclasses to provide concrete behavior.

간단히 말해 템플릿 기능(method)을 가진 패턴.
상위 추상 클래스에 interface와 알고리즘을 정해두고, 하위 클래스가 이를 구현한다.
상위의 추상 클래스는 기능(알고리즘)에 대한 뼈대 역할을 할 것이다.

UML

Template-Method-Pattern

구셩 요소

  1. Abstract Class
  2. Concrete Class

왜 쓸까?

  • 템플릿 메서드에서 이미 알고리즘이 기술되어 있어서 뼈대 알고리즘의 통합 관리가 편하다.
  • The Liskov Substitution Principle (LSP)의 한 사례. (다형성)
  • 코드 중복을 줄인 채 다양한 변형을 쉽게 만들 수 있다. (객체의 확장이 쉽다.)

주의 사항

  • 상속을 이용하므로 상위 클래스와 하위 클래스의 결합도가 높다.
  • 하위 클래스에서 언제 어떻게 호출될 지 생각해야 한다.

관련 패턴

  • Factory Method : Template Method 를 인스턴스 생성에 응용.
  • Strategy : Template Method 가 ‘상속’을 이용하여 세세한 부분을 구현한다면, Strategy 는 ‘위임’을 이용하여 알고리즘 전체를 완전히 교체한다.