본문 바로가기
language/java

Java 템플릿 메서드 패턴(Template Method Pattern) 완벽 이해하기

by 죄니안죄니 2026. 5. 22.
반응형

Java 템플릿 메서드 패턴(Template Method Pattern) 완벽 이해하기

Java 실무에서 프레임워크 내부 구조를 이해하려면 반드시 알아야 하는 패턴이 바로:

템플릿 메서드 패턴(Template Method Pattern)

입니다.

특히:

  • Spring Framework
  • JdbcTemplate
  • HttpServlet
  • JUnit
  • 트랜잭션 처리

등에서 매우 많이 사용됩니다.

초보 시절에는 보통:

“부모 클래스가 흐름을 정의하는 패턴”
 

정도로만 이해하기 쉽습니다.

하지만 실제 템플릿 메서드 패턴은:

  • 공통 흐름 재사용
  • 중복 제거
  • 확장 포인트 제공
  • 프레임워크 설계

를 위한 매우 중요한 객체지향 패턴입니다.

이번 글에서는:

  • 템플릿 메서드 패턴이 왜 필요한가
  • 내부 구조
  • Spring에서 어떻게 사용하는가
  • 전략 패턴과 차이
  • 실무 사용 시 주의점

까지 정리해보겠습니다.


1. 템플릿 메서드 패턴이란?

템플릿 메서드 패턴은:

전체 작업 흐름(Template)은 부모 클래스가 정의하고, 일부 세부 구현만 자식 클래스가 구현하는 패턴

입니다.

즉:

공통 흐름 고정
↓
일부 단계만 변경 가능
 

구조.


2. 왜 템플릿 메서드 패턴이 필요할까?

예를 들어 데이터 처리 로직.

안 좋은 예:

 
public void processA() {

    connect();
    executeA();
    disconnect();
}

public void processB() {

    connect();
    executeB();
    disconnect();
}
 

문제:

공통 코드 중복
 

발생.


3. 템플릿 메서드 패턴 핵심 아이디어

핵심은:

공통 흐름은 부모에
세부 구현은 자식에
 

분리하는 것입니다.


4. 기본 구조

 
public abstract class DataProcessor {

    public final void process() {

        connect();

        execute();

        disconnect();
    }

    private void connect() {
        System.out.println("DB 연결");
    }

    private void disconnect() {
        System.out.println("DB 종료");
    }

    protected abstract void execute();
}
 

5. 자식 클래스 구현

 
public class UserProcessor
        extends DataProcessor {

    @Override
    protected void execute() {
        System.out.println("사용자 처리");
    }
}
 

6. 실행 흐름

 
DataProcessor processor =
    new UserProcessor();

processor.process();
 

결과:

DB 연결
사용자 처리
DB 종료
 

7. 템플릿 메서드 패턴 핵심 구조

구조:

Template Method
 ↓
공통 흐름 정의
 ↓
Hook / Abstract Method
 ↓
자식 구현
 

8. 왜 final을 자주 사용할까?

 
public final void process()
 

이유:

전체 흐름 변경 방지
 

목적.

즉:

  • 프레임워크 핵심 흐름 보호

가능.


9. 추상 메서드(Abstract Method)

 
protected abstract void execute();
 

의미:

세부 구현은 자식이 반드시 제공
 

해야 함.


10. Hook Method란?

선택적으로 오버라이딩 가능한 메서드.

예시:

 
protected void before() {

}
 

기본 구현 존재.

필요 시 자식에서 변경.


11. Hook Method 목적

확장 포인트 제공
 

입니다.

즉:

  • 기본 동작 유지
  • 일부 커스터마이징 허용

구조.


12. 템플릿 메서드 패턴 장점


장점 설명
중복 제거 공통 흐름 재사용
유지보수성 공통 로직 한 곳 관리
확장성 일부 단계만 교체 가능
구조 표준화 흐름 통일 가능

13. 템플릿 메서드 패턴 단점


단점 설명
상속 의존 강한 결합
클래스 증가 구조 복잡 가능
유연성 제한 런타임 교체 어려움

14. 전략 패턴과 차이

매우 중요합니다.


구분 템플릿 메서드 전략 패턴
기반 상속 조합
변경 방식 상속 오버라이딩 객체 교체
결합도 상대적으로 높음 낮음
런타임 교체 어려움 쉬움

15. 핵심 차이 요약

템플릿 메서드

“흐름은 고정”
 

전략 패턴

“행동 자체 교체”
 

16. Spring JdbcTemplate도 템플릿 패턴

대표 사례.

예시:

 
jdbcTemplate.query(...)
 

내부적으로:

Connection 생성
↓
Statement 실행
↓
Exception 처리
↓
Resource 정리
 

공통 흐름 제공.

사용자는:

쿼리 실행 부분만 구현
 

하면 됨.


17. Spring Framework 이름 자체가 힌트

대표 클래스:

JdbcTemplate
RedisTemplate
RestTemplate
 

전부:

Template Method Pattern
 

기반.


18. HttpServlet도 템플릿 패턴

대표 구조:

 
service()
 ↓
doGet()
doPost()
 

흐름은 부모(HttpServlet)가 정의.

세부 구현은 자식 Servlet 제공.


19. JUnit도 템플릿 패턴 구조

예시:

@BeforeEach
@Test
@AfterEach
 

실행 흐름은 프레임워크가 제어.


20. 템플릿 메서드와 프레임워크

프레임워크에서 중요한 개념:

제어의 역전(Inversion of Control)
 

즉:

  • 사용자가 흐름 제어 X
  • 프레임워크가 흐름 제어

구조.

템플릿 메서드 패턴이 이를 잘 구현.


21. Hollywood Principle

템플릿 패턴과 자주 연결되는 원칙.

“Don't call us,
we'll call you.”
 

즉:

  • 사용자가 흐름 호출 X
  • 프레임워크가 필요 시 호출

구조.


22. 템플릿 메서드와 상속

핵심 기반:

상속 + 오버라이딩
 

입니다.

즉:

  • 부모 흐름 유지
  • 자식 일부 변경

구조.


23. 실무에서 자주 하는 실수

1) 템플릿 메서드 남용

모든 로직을 상속 구조로 설계.

→ 유연성 감소.


2) 부모 클래스 비대화

God Abstract Class
 

문제 발생 가능.


3) 너무 깊은 상속 구조

AbstractBaseService
 ↓
AbstractOrderService
 ↓
OrderService
 

유지보수 어려움.


24. 현대 실무는 전략 패턴 선호 경향

최근은:

상속보다 조합(Composition)
 

선호.

즉:

  • 전략 패턴
  • DI
  • 함수형 방식

많이 사용.


25. 그래도 템플릿 패턴이 중요한 이유

프레임워크 내부는 여전히:

템플릿 메서드 패턴
 

매우 많이 사용.

특히:

  • 공통 흐름 관리
  • 리소스 정리
  • 트랜잭션 처리

등에서 강력.


26. 실무에서 적합한 상황

추천 상황:


상황 적합 여부
공통 흐름 동일 매우 좋음
일부 단계만 변경 매우 좋음
프레임워크 구조 매우 좋음
런타임 교체 필요 전략 패턴 추천

27. 템플릿 메서드와 OCP (개방-폐쇄 원칙)

새 기능 추가 시:

새 자식 클래스 추가
 

만 하면 가능.

즉:

기존 흐름 수정 최소화
 

가능.


28. 템플릿 메서드 패턴 진짜 목적

핵심 목적은:

공통 흐름 재사용
+
확장 포인트 제공
 

입니다.

즉:

  • 중복 제거
  • 구조 통일
  • 유지보수성 향상

을 위한 패턴.


29. 실무 관점 핵심 정리

템플릿 메서드 패턴

“흐름을 프레임워크가 제어”
 

전략 패턴

“행동을 객체로 교체”
 

30. 정리

템플릿 메서드 패턴(Template Method Pattern)은 단순 디자인 패턴이 아닙니다.

실제로는:

  • Spring Template 구조
  • 프레임워크 설계
  • 공통 흐름 재사용
  • 제어의 역전(IoC)

과 깊게 연결되는 매우 중요한 패턴입니다.

특히 실무에서는:

  • JdbcTemplate
  • HttpServlet
  • 트랜잭션 처리
  • 공통 로직 관리

등에서 매우 많이 사용됩니다.

다음 글에서는:

JVM 구조 이해

를 ClassLoader, Execution Engine, Runtime Data Area까지 포함해서 깊게 정리해보겠습니다.

반응형

댓글