템플릿 메서드 패턴 (Template Method Pattern)
정의
- 템플릿 메소드 패턴(template method pattern)은 소프트웨어 공학에서 동작 상의 알고리즘의 프로그램 뼈대를 정의하는 행위 디자인 패턴이다.
- 알고리즘의 구조를 변경하지 않고 알고리즘의 특정 단계들을 다시 정의할 수 있게 해준다
특징
- 상위 클래스에 구조를, 하위 클래스에 처리를 구현하는 패턴.
- 공통 사항은 추상클래스에서 구현, 처리는 각각의 서브 클래스에서 구현.
- 코드 중복을 줄이고, 리펙토리에 유용, 확장에 용의.
다이어그램
템플릿 메서드 패턴 사용전
1 |
|
Code
1 |
|
패턴 사용전 문제점
1 |
|
템플릿 메서드 패턴을 사용해 보자
- 1) 공통적인 부분을 모아 추상클래스를 만들자
Code
1 |
|
- 2) 알고리즘의 세부 항목에서 차이가 있는 곳은 추상 메소드로 정의한다.
Code
1 |
|
- 3) 하위 클래스에서 오버라이딩 되지 않아야 할 메서드는 final을 선언한다.
Code
1 |
|
- 4) 서브클래스 구현시 융통성을 발휘하기 위해 Hook 메서드를 구현한다.
Code
1 |
|
후크 메서드
- abstract 키워드를 붙이면 상속 받은 클래스는 반드시 해당 메소드를 구현해야 하지만
abstract 키워드를 붙이지 않고 훅 메소드로 만들면 반드시 구현할 필요가 없습니다.
상속 받은 클래스에서는 선택적으로 오버라이드할 수 있다는 얘기가 됩니다.