본문 바로가기
GoF의 디자인 패턴

템플릿 메소드(Template method) 패턴

by 아토로 2022. 1. 19.

템플릿 메소드(Template method) 패턴

Algorithm 구조를 서브 클래스가 확장할 수 있도록 템플릿으로 제공하는 방법

 

추상 클래스는 템플릿을 제공하고 하위 클래스는 구체적인 Algorithm을 제공한다.

 

템플릿 콜백(Template-Callback) 패턴

콜백으로 상속 대신 위임을 사용하는 템플릿 패턴

상속 대신 익명 내부 클래스 또는 람다 표현식을 활용할 수 있다.

구현 방법

장단점

장점

  • 템플릿 코드를 재사용하고 중복 코드를 줄일 수 있다.
  • 템플릿 코드를 변경하지 않고 상속을 받아서 구체적인 Algorithm만 변경할 수 있다.

단점

  • 리스코프 치환 원칙을 위반할 수도 있다.
    • 하위 클래스에서 의도치 않은 행동으로 상속할 경우 발생 (final로 상속을 막으면 어느정도 방지 가능)
  • 알고리듬 구조가 복잡할수록 템플릿을 유지하기 어려워진다.

실무 적용 사례

  • 자바
    • HttpServlet
  • 스프링
    • 템플릿 메소드 패턴
      • Configuration
    • 템플릿 콜백 패턴
      • JdbcTemplate
      • RestTemplate

예제 코드

https://github.com/jsyang-dev/study-designpattern/tree/master/src/main/java/me/study/designpattern/templatemethod

'GoF의 디자인 패턴' 카테고리의 다른 글

브릿지(Bridge) 패턴  (0) 2022.01.29
퍼사드 패턴  (0) 2022.01.28
어댑터(Adapter) 패턴  (0) 2022.01.13
프로토타입(Prototype) 패턴  (0) 2022.01.10
빌더(Builder) 패턴  (0) 2022.01.08

댓글