변하지 않는 부분을 템플릿 역할로 두고
변하는 부분은 파라미터로 넘겨 실행 가능하게 하는 코드를 콜백이라고 합니다.
콜백은 필요에 따라 즉시 실행할 수도 있고 나중에 실행할 수도 있습니다.
스프링에서 이름에 ~~Template가 있다면 템플릿 콜백 패턴으로 만들어져 있다고 생각하면 됩니다.
interface code
public interface Callback {
void call();
}
template code
@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);
}
}
test code
/**
*템플릿 콜백 패턴-람다
*/
@Test
void callbackV2() {
TimeLogTemplate template = new TimeLogTemplate();
template.execute(() -> log.info("비즈니스 로직1 실행"));
template.execute(() -> log.info("비즈니스 로직2 실행"));
}
reference : 김영한님