Template Method Pattern
템플릿 메서드 패턴
정의
템플릿 메서드 패턴은 여러 클래스에서 공통으로 사용하는 메서드를 템플릿화하여 상위 클래스에서 정의하고, 하위 클래스마다 세부 동작 사항을 다르게 구현하는 패턴
변하지 않는 기능은 상위 클래스에 만들어두고, 자주 변경되어 확장할 기능은 하위 클래스에서 만드는것으로, 알고리즘의 골격을 변경해야 할 때, 상위 클래스만 수정하면 됩니다.

AbstractClass
템플릿 메소드를 구현하고, 템플릿 메서드에서 돌아가는 추상 메서드를 선언합니다. ConcreteClass 역할에 의해 구현됩니다.
ConcreteClass
AbstractClass를 상속하고 추상 메소드를 구체적으로 구현합니다. ConcreteClass에서 구현한 메서드는 AbstractClass의 템플릿 메서드에서 호출됩니다.
후크
후크 메서드는 부모의 템플릿 메서드의 영향이나 순서를 제어하고 싶을때 사용되는 메서드 형태입니다.
후크 메서드는 하위 클래스에서 선택적으로 Override할 수 있는 메서드로, 템플릿메서드에서 기본적으로는 아무런 동작도 하지 않지만, 필요에 따라 하위 클래스에서 구현하여 특정 동작을 추가/수정합니다.
장점
제어 역전
하위 클래스가 알고리즘의 전체 흐름을 제어하지 않습니다. 상위 클래스에서 전체 흐름을 주도합니다.
구현 세부사항 은닉
상위 클래스는 알고리즘의 구조를 알고 있지만, 구체적인 구현 세부사항은 하위 클래스에게 맡깁니다. 상위 클래스는 알고리즘의 전반적인 흐름을 유지하면서도, 세부 구현을 다양하게 변경할 수 있습니다.
Last updated