본문 바로가기
컴퓨터과학/디자인패턴

[디자인패턴] 템플릿 메소드 패턴 (Tempalate Method Pattern)

by 윤호 2021. 12. 11.

목적

알고리즘의 뼈대를 정의하고, 일부를 서브 클래스로 위임.

알고리즘의 구조를 변경하지 않고 알고리즘의 일부 내용을 서브 클래스에서 재정의 할 수 있도록

요소

문제 : 알고리즘들을 캡슐화시키면서 중복되는 코드가 여러 클래스에 존재함

해결 : 알고리즘의 중복되는 부분을 부모 클래스에 캡슐화, 달라지는 부분만 서브 클래스에 구현

결과 : 중복되는 코드를 줄임

정의

추상 클래스에서 고정된 알고리즘 즉, 알고리즘 뼈대를 구현 - templateMethod.

구현체마다 다를 수 있는 primitivOperation은 추상 메소드로 구현

상속받은 Concrete 클래스는 primitiveOperation 메소드를 구현하여 전체 알고리즘을 완성한다.

음료 레시피 구현

"물을 끓인다 (boilWater)"와 "컵에 따른다(pourInCup)"가 공통됨.

두 레시피의 알고리즘을 정리하면 다음과 같다.

 

템플릿 메소드를 갖는 추상 클래스

Concrete 클래스 - 홍차, 커피

Hook 

기본적인 내용만 구현되어 있거나 아무 코드도 들어있지 않은 메소드를 hook라고 함.

서브클래스에서 수정할 수 있도록 한다. -> 알고리즘의 한 부분을 선택적 구현

템플릿 패턴 vs 전략 패턴

템플릿 패턴은 상속을 이용해서 알고리즘의 일부를 다른 클래스에 맡김

전략 패턴알고리즘 전체를 위임

+ 팩토리 패턴은 템플릿 패턴의 특화된 버전이기도 함

 


reference : 상명대학교 조용주 교수님

댓글