템플릿 콜백 패턴이란?
🖊 콜백이란?
프로그래밍에서 콜백 또는 콜애프터 함수는 다른 코드의 인수로서 넘겨주는 실행 가능한 코드를 말한다. 콜백을 넘겨받는 코드는 이 콜백을 필요에 따라 즉시 실행할 수 있고, 아니면 나중에 실행할 수 있다.
자바에서 콜백 함수란 자바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
Author And Source
이 문제에 관하여(템플릿 콜백 패턴이란?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@cherish8513/템플릿-콜백-패턴이란저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)