Computer Science/Design Pattern

Callback pattern & Template callback pattern

Kim Jinung 2023. 6. 5. 19:18

Callback pattern

Callback은 실행 가능한 코드 조각을 의미한다. 메서드에 콜백을 인자로 넘기면 콜백을 인자로 받는 메서드는 콜백을 원하는 시점에 실행할 수 있다. (주로 비동기 처리를 위한 목적으로 사용하는 개념이라고 한다.)

Example

public interface Callback {

  void call();
}


public abstract class Task {

  final void executeWith(Callback callback) {
    execute();
    Optional.ofNullable(callback).ifPresent(Callback::call);
  }

  public abstract void execute();
}

@Slf4j
public final class SimpleTask extends Task {

  @Override
  public void execute() {
    LOGGER.info("Perform some important activity and after call the callback method.");
  }
}

    var task = new SimpleTask();
    task.executeWith(() -> LOGGER.info("I'm done now."));

위 코드는 템플릿 메서드 패턴을 사용해서 공통 로직을 구현하고, 콜백(코드 조각)을 인자로 받음으로써 변경 포인트를 유연하게 변경하고 있다.

Template Callback pattern

전략 패턴과 유사하다. 공통 로직(템플릿)에 구체적인 구현(콜백)을 주입한다. JdbcTemplate의 내부 코드가 이 템플릿 콜백 패턴이다. 

템플릿 메서드 패턴, 전략 패턴, 템플릿 콜백 패턴 모두다 중복되는 공통 로직을 템플릿화 해서 코드를 재사용하고 변경사항만 클라이언트로부터 주입받아서 유지보수를 편하게 하기 위한 목적을 가지고 있다.


 

Reference

https://java-design-patterns.com/patterns/callback/#explanation

 

Callback

Intent Callback is a piece of executable code that is passed as an argument to other code, which is expected to call back (execute) the argument at some convenient time. Explanation Real world example We need to be notified after executing task has finishe

java-design-patterns.com