Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

개발자되기 프로젝트

Template CallBack - 1 본문

인프런/[인프런] 스프링 핵심 원리 - 고급

Template CallBack - 1

Seung__ 2021. 11. 22. 23:28
  • Context -->  Template
  • Strategy --> Callback

 

1. Callback 인터페이스


public interface Callback {

    void call();
}

 

2. TimeLogTemplate


  • template는 호출할 callback을 전달 받는다.
  • 전달된 callback은 클라이언트 코드 쪽에서 실행되는 것이 아니라 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);
    }
}

 

3. Test


@Slf4j
public class TemplateCallbackTest {

    /**
     * 템플릿 콜백 패턴 - 익명 내부 클래스
     */
    @Test
    void callbackV1(){
        TimeLogTemplate template = new TimeLogTemplate();
        template.execute(new Callback() {
            @Override
            public void call() {
                log.info("비즈니스 로직1 실행");
            }
        });

        template.execute(new Callback() {
            @Override
            public void call() {
                log.info("비즈니스 로직2 실행");
            }
        });
    }


    /**
     * 템플릿 콜백 패턴 - 람다
     */
    @Test
    void callbackV2(){
        TimeLogTemplate template = new TimeLogTemplate();
        template.execute(() -> log.info("비즈니스 로직1 실행"));
        template.execute(() -> log.info("비즈니스 로직2 실행"));
    }

}

 

 

4. GitHub : 211122 Template CallBack-1


 

GitHub - bsh6463/Spring_Advanced: initial

initial. Contribute to bsh6463/Spring_Advanced development by creating an account on GitHub.

github.com

 

'인프런 > [인프런] 스프링 핵심 원리 - 고급' 카테고리의 다른 글

정리 및 한계  (0) 2021.11.23
Template CallBack - 2  (0) 2021.11.22
Template CallBack - 시작  (0) 2021.11.22
Strategy Pattern - 3  (0) 2021.11.22
Strategy Pattern - 2, 익명 내부 클래스  (0) 2021.11.22
Comments