본문 바로가기
🎨 디자인 패턴

템플릿 콜백 패턴

by 시마이 2024. 5. 28.

🗣 템플릿 콜백 패턴

여러 클래스에서 반복되는 로직이지만, 로직의 일부분만 클래스별로 다르게 처리해야 할 때 사용하는 디자인 패턴.

템플릿 메서드 패턴, 전략패턴과 기능은 유사하지만 아래와 같은 차이점이 있다.

 

 

 

🆚 템플릿 메서드 패턴 & 전략패턴

디자인 패턴 변하지 않는 로직 변하는 로직
템플릿 메서드 패턴 부모클래스 자식클래스
전략 패턴 클래스, Context로 표현 인터페이스 구현 클래스, Strategy로 표현
템플릿 콜백 패턴 클래스, Template으로 표현 인터페이스 구현 클래스, Callback으로 표현

 

 

 

 

  • 인터페이스
  • 다형성
  • 오버라이딩

 

 

 

1. Callback 인터페이스를 구현한 클래스를

2. Template 메서드의 파라미터로 전달하고

3. Template 메서드 내부에서 실행

 

 

 

1. Callback

public interface Callback {
    void call();
}

2. Template

public class Template {

    public void execute(Callback callback) {
        long startTime = System.currentTimeMillis();
        
        //비즈니스 로직 실행
        callback.call(); //위임
        //비즈니스 로직 종료
        
        long endTime = System.currentTimeMillis();
        long resultTime = endTime - startTime;
        log.info("resultTime={}", resultTime);
    }
}

 

 

 

@Test
void callbackV1() {
    TimeLogTemplate template = new TimeLogTemplate();
    
    // 방식1. 익명 내부 클래스
    template.execute(new Callback() {
        @Override
        public void call() {
            log.info("비즈니스 로직1 실행");
        }
    });

	// 방식2. 람다
    template.execute(() -> log.info("비즈니스 로직1 실행"));
}

 

 

참고
스프링에서 XxxTemplate을 본다면 템플릿 콜백 패턴의 내용을 떠올리자 

 

 


 

스프링 핵심 원리 - 고급편 | 김영한 - 인프런

김영한 | 스프링의 핵심 원리와 고급 기술들을 깊이있게 학습하고, 스프링을 자신있게 사용할 수 있습니다., 핵심 디자인 패턴, 쓰레드 로컬, 스프링 AOP스프링의 3가지 핵심 고급 개념 이해하기

www.inflearn.com