최근 IKEA에서 조립형 책상을 구매했던 경험이 있다.
동봉된 설계도를 보면서 책상조립을 했기에 조립에 어려움은 없었던 기억이 있다.
클래스의 세계에서도 이와 유사한 경험을 할 수 있다.
예를들어, 다른 클래스를 상속하여 구현하는 상황을 생각해보자.
현재 클래스의 목적에 맞게 메서드들을 재정의하고, 이를 동작시키기는게 가능할 것이다.
당연하게도 개별적인 동작도 가능하지만, 상위클래스에서 특정 순서대로 동작하는 예시메서드를 제공할 수 있다. 즉, 상위클래스의 입장에서 정의된 정해진 동작순서대로 동작하도록 본보기( Template ) 메서드를 제공할 수 있다.
템플릿 패턴은 템플릿 메서드 패턴이라고도 불린다.
상위 추상클래스에 동작순서를 정의해놓은 템플릿 메서드를 제공함으로써,
이를 상속하는 클래스에서는 세부구현을 재정의하되 실제 사용은 하나의 템플릿 메서드를 이용하게 된다.
여러 템플릿 메서드를 기능 혹은 상황에 맞게 제공함으로써, 하위클래스에서는 직접 세부구현의 순서를 조정하지 않아도 되는 장점이 있다.
이를통해, 세부구현 정의와 동작순서 정의를 구분하여 SRP와 OCP를 준수하는데 도움이 된다.