알고리즘의 구조는 유지하면서 알고리즘의 특정 단계를 서브클래스에서 구현하거나 재정의하는 방법이다.
코드의 유사성이 높은데 코드의 일부분이 다른 경우, 템플릿 메소드로 공통인 부분은 상위로 올리고 다른 부분만 서브 클래스에서 구현하게 한다. 코드가 그대로 중복되는 것을 막을 수 있고, 공통 인터페이스를 사용해 메시지를 요청할 수 있다.
프레임워크를 제공할 때 자주 사용한다. 프레임워크는 사용자로 하여금 작업 흐름을 강제하는데, 템플릿 메소드에서 알고리즘 구조를 제어할 수 있다. 그러면서도 알고리즘의 각 단계는 사용자가 마음대로 지정할 수 있다.
일련의 알고리즘을 정의한 메소드인 템플릿 메소드를 가진 상위 클래스가 필요하다. 템플릿 메소드에서 호출하는 알고리즘의 각 단계를 구현하는 서브 클래스도 필요하다.
<aside> 💡 템플릿 메소드에서 호출하는 메소드
</aside>