템플릿 메서드 / 전략 / 템플릿 콜백 패턴의 비교

Haechan Kim·2025년 6월 23일
0

Modern Java

목록 보기
10/10

세 패턴 모두 "유사한 알고리즘 구조를 갖고, 일부 행동은 나중에 결정한다"는 공통점 갖고 있는 패턴이다.

1. 템플릿 메서드 패턴

  • 핵심 : 상속으로 공통 알고리즘 틀 정하고, 일부 하위 클래스에서 재정의.
  • 구성 방식 : 상속 기반
  • 키워드 : 고정된 틀, 재정의
  • 요약 : 상속 기반의 고정된 알고리즘 템플릿 + 하위 구현.

하위 클래스에서 구현할 수 있는 메서드로 추상 메서드와 Hook 메서드가 존재한다.
Hook 메서드는 선택적으로 오버라이딩 할 수 있는 메서드를 뜻한다.

제어의 흐름은 부모 클래스에서 고정되어 있고, 일부 로직(행동)만 하위 클래스에서 정의할 수 있다.

2. 전략 패턴

  • 핵심 : composition 통해 알고리즘 외부에서 주입.
  • 구성 방식 : 인터페이스 + 위임(delegation)
  • 키워드 : 유연한 교체, 런타임 중 전략 변경.
  • 요약 : 행동 전체를 객체로 외부 주입해 유연성 확보.

전략을 동적으로 바꿔야 할 때 사용한다.

3. 템플릿 콜백 패턴

  • 핵심 : 콜백 메서드 인자로 받아 처리 흐름 사용자에게 위임.
  • 구성 방식 : 함수형 인터페이스 or 콜백
  • 키워드 : 유연성, 짧은 로직 (콜백)
  • 요약 : 함수(람다) 인자로 넘겨 콜백처럼 위임.


템플릿 메서드 VS 전략 패턴

항목템플릿 메서드전략 패턴
핵심 개념부모 클래스가 알고리즘의 틀 정의하고 일부만 하위 클래스에 위임알고리즘을 인터페이스로 분리하고 외부에서 주입
확장 방식상속composition
실행 시점 변경 가능?❌ 컴파일 타임 구조 고정✅ 런타임에 전략 변경 가능
적용 예HttpServlet.service(), JUnit의 TestCase 등Comparator, Spring의 Policy 전략 등
단점상속에 의존 → 유연성 낮음객체 수 많아질 수 있음
대표 의도공통 알고리즘 구조를 고정, 일부만 다르게다양한 알고리즘을 유연하게 교체

<결론>
알고리즘 틀 유지하고, 일부만 변경, 고정된 흐름 -> 템플릿 메서드.
유연하고 바꿀 수 있는 전략 필요 -> 전략 패턴.


템플릿 메서드 VS 템플릿 콜백 패턴

항목템플릿 메서드템플릿 콜백
핵심 개념부모 클래스가 알고리즘을 고정하고 일부만 하위 클래스에 위임메서드 흐름은 고정하되, 콜백으로 핵심 로직 전달
구현 방식클래스 상속, 메서드 재정의함수형 인터페이스 또는 람다 전달
Java 버전자바 전통적인 객체 지향 방식Java 8 이상 (람다식 활용)
예시AbstractController 등JdbcTemplate.execute(), 람다 기반 콜백
유연성❌ 고정 구조, 재정의 필요✅ 간결하고 유연, 코드 중복 줄이기
결합도클래스 간 결합 높음결합도 낮음 (함수 단위 분리)

<결론>
상속의 한계 피하려면 템플릿 콜백이 더 현대적인 방식.


전략 VS 템플릿 콜백 패턴

항목전략 패턴템플릿 콜백
구조 방식인터페이스 기반의 객체 위임함수형 콜백 전달
전략/로직 제공 방식명시적인 전략 객체람다식 등 간단한 익명 함수
전통성OOP 전통적 방식함수형, Java 8 이후 등장
코드 양클래스 수 증가 가능코드 간결함, 재사용성 좋음
사용 예Sorting 정책, 인증 방식JdbcTemplate, TransactionTemplate 등
결합도낮음 (구성 기반)매우 낮음 (함수 전달)

<결론>
둘 다 유연하지만,
명확한 전략 객체 구조 필요 시 -> 전략 패턴.
단순하고 유연한 작업 위임, 람다 -> 템플릿 콜백.

0개의 댓글