콜백 패턴특정 이벤트가 발생했을 때 실행될 함수를 미리 등록해두는 디자인 패턴이다. 콜백 함수는 이벤트가 발생하면 시스템에 의해 '호출되어' 사용됩니다. 이러한 방식은 주로 비동기 프로그래밍에서 많이 사용된다.

콜백 패턴의 원리

콜백 패턴의 기본 원리는 다음과 같다.

  1. 함수 A를 정의하고 이 함수를 다른 함수 B에 인자로 전달한다.
  2. 함수 B는 내부 로직 실행 후, 전달받은 함수 A를 호출한다. 이 때, 함수 A가 호출되는 시점을 '콜백'이라고 한다.
interface OnWorkDoneListener {
    void onWorkDone();
}

class Worker {
    private final OnWorkDoneListener listener;

    public Worker(OnWorkDoneListener listener) {
        this.listener = listener;
    }

    public void doWork() {
        // 여기서 어떤 작업을 수행합니다.
        // 작업이 끝나면, 콜백 메소드를 사용하여 작업이 끝났음을 알립니다.
        listener.onWorkDone();
    }
}

public class Main {
    public static void main(String[] args) {
        Worker worker = new Worker(() -> System.out.println("Work is done!"));
        worker.doWork();
    }
}

콜백 패턴의 장단점 

장점

  1. 비동기 처리: 자바에서는 콜백 패턴을 사용하여 비동기 작업을 처리할 수 있다. 즉, 어떤 작업이 끝날 때까지 기다리지 않고 다른 작업을 진행할 수 있다.
  2. 코드의 재사용성: 인터페이스를 정의하고 이를 구현하는 클래스를 작성함으로써, 같은 인터페이스를 가진 다른 클래스에 같은 동작을 적용할 수 있어 코드의 재사용성을 높인다.

단점

  1. 복잡성: 콜백 패턴은 코드의 복잡성을 증가시킬 수 있다. 콜백 함수가 여러 단계로 중첩될 경우, 코드의 가독성이 떨어지고 로직을 이해하기 어려워진다.
  2. 오류 처리: 콜백 패턴에서는 오류를 처리하기 어려울 수 있다. 각 콜백 함수 마다 오류 처리 코드를 작성해야 하기 때문이다.

'Java > 스프링 AOP' 카테고리의 다른 글

프록시 패턴  (0) 2023.08.04
템플릿 메서드 패턴, 전략 패턴, 콜백 패턴의 차이  (0) 2023.08.02
전략 패턴  (0) 2023.08.02
템플릿 메서드 패턴  (0) 2023.07.31
쓰레드 로컬(Thread Local)  (0) 2023.07.28

+ Recent posts