> For the complete documentation index, see [llms.txt](https://seokrae.gitbook.io/sr/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://seokrae.gitbook.io/sr/java-1/design/behavioural/_template_method.md).

# Template Method Pattern

Behavioral Pattern

## Intro

![Intro](https://554043693-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MSm3cZika9wPcLt2w9B%2Fsync%2Ff87d9771498c2aedeee3a421fa48e0451178e368.png?generation=1623575374372026\&alt=media)

![Reference](https://554043693-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MSm3cZika9wPcLt2w9B%2Fsync%2F868d3911e98fe392e0c4d0bc60bdc3ea11dcc000.png?generation=1623575374334996\&alt=media)

## Template Method 패턴이란?

![What is Template Method](https://554043693-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MSm3cZika9wPcLt2w9B%2Fsync%2F713f9cea6a4d7880f6c389d9657b8038a2c304a1.png?generation=1623575374208732\&alt=media)

## Template Method 패턴의 아키텍처

* 훅(hook) 메서드란?
  * 슈퍼 클래스에서 디폴트 기능을 정의해두거나 비워뒀다가 서브 클래스에서 선택적으로 재정의 할 수 있도록 만들어 둔 메서드
  * 서브 클래스에서 추상 메서드를 구현하거나, 훅 메서드를 재정의하는 방법을 이용하여 기능의 일부를 확장

![Architecture](https://554043693-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MSm3cZika9wPcLt2w9B%2Fsync%2Fc531f05e91f397d91b4941dfa48e4ea48c4f2dbe.png?generation=1623575374277189\&alt=media)

## Template Method 패턴의 예시

![Example](https://554043693-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MSm3cZika9wPcLt2w9B%2Fsync%2Fbc071a505aa641ccddf11327370e7c43d9726432.png?generation=1623575374644881\&alt=media)

## 적용 가능한 상황

![Applicability](https://554043693-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MSm3cZika9wPcLt2w9B%2Fsync%2Fcfd2616be51388b6e9afa9d26e438b8b75371872.png?generation=1623575374779056\&alt=media)

## 장 단점

![Pros and Cons](https://554043693-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MSm3cZika9wPcLt2w9B%2Fsync%2F9c1c4b4b7260a17751bfdfcdc24dcd91b3c718c3.png?generation=1623575375130566\&alt=media)

## 다른 디자인 패턴과의 관계

![Relations with Other Patterns](https://554043693-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MSm3cZika9wPcLt2w9B%2Fsync%2Fd6967df064d366749283c975485166daab6c3832.png?generation=1623575374521217\&alt=media)
