템플릿 콜백 패턴이란?

JooHeon·2021년 12월 3일
0

🖊 콜백이란?

프로그래밍에서 콜백 또는 콜애프터 함수는 다른 코드의 인수로서 넘겨주는 실행 가능한 코드를 말한다. 콜백을 넘겨받는 코드는 이 콜백을 필요에 따라 즉시 실행할 수 있고, 아니면 나중에 실행할 수 있다.
자바에서 콜백 함수란 자바8 이후에는 하나의 메소드를 가진 인터페이스를 구현하고 람다로 이를 넘긴다.

🖊 템플릿 콜백 패턴

GOF 패턴은 아니고 스프링 내부에서 자주 사용하는 패턴으로 스프링 안에서만 부르는 방식이고 전략 패턴에서 템플릿과 콜백 부분이 강조된 패턴이다.
EX) JdbcTemplate, RestTemplate, TransactionTemplate, RedisTemplate 등
이전 파라미터로 인수를 넘기는 전략 패턴 포스터의 예제가 템플릿 콜백 패턴이다.

🖊 예제

// Context -> Template
@Slf4j
public class TimeLogTemplate {
    
    public void execute(Callback callback){ 
        long startTime = System.currentTimeMillis();
        //비지니스 로직 실행
        callback.call();
        //비지니스 로직 종료
        long endTime = System.currentTimeMillis();
        long resultTime = endTime - startTime;
        log.info("resultTime={}", resultTime);
    }
}

// Strategy -> Callback
@Slf4j
public class Template {

    @Test
    void callbackTest(){
        TimeLogTemplate template = new Template();
        template.execute(new CallbackLogic1());
        template.execute(new Callback() {
            @Override
            public void call() {
                log.info("비지니스 로직2 실행");
            }
        });
        template.execute(() -> log.info("비지니스 로직3 실행"));
    }

}

// 결과
15:49:22.645 [main] INFO CallbackLogic1 - 비지니스 로직1 실행
15:49:22.648 [main] INFO TimeLogTemplate - resultTime=5
15:49:22.651 [main] INFO callbackTest - 비지니스 로직2 실행
15:49:22.651 [main] INFO TimeLogTemplate - resultTime=0
15:49:22.651 [main] INFO callbackTest - 비지니스 로직3 실행
15:49:22.651 [main] INFO TimeLogTemplate - resultTime=0

0개의 댓글