콜백 패턴은 특정 이벤트가 발생했을 때 실행될 함수를 미리 등록해두는 디자인 패턴이다. 콜백 함수는 이벤트가 발생하면 시스템에 의해 '호출되어' 사용됩니다. 이러한 방식은 주로 비동기 프로그래밍에서 많이 사용된다.
콜백 패턴의 원리
콜백 패턴의 기본 원리는 다음과 같다.
- 함수 A를 정의하고 이 함수를 다른 함수 B에 인자로 전달한다.
- 함수 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();
}
}
콜백 패턴의 장단점
장점
- 비동기 처리: 자바에서는 콜백 패턴을 사용하여 비동기 작업을 처리할 수 있다. 즉, 어떤 작업이 끝날 때까지 기다리지 않고 다른 작업을 진행할 수 있다.
- 코드의 재사용성: 인터페이스를 정의하고 이를 구현하는 클래스를 작성함으로써, 같은 인터페이스를 가진 다른 클래스에 같은 동작을 적용할 수 있어 코드의 재사용성을 높인다.
단점
- 복잡성: 콜백 패턴은 코드의 복잡성을 증가시킬 수 있다. 콜백 함수가 여러 단계로 중첩될 경우, 코드의 가독성이 떨어지고 로직을 이해하기 어려워진다.
- 오류 처리: 콜백 패턴에서는 오류를 처리하기 어려울 수 있다. 각 콜백 함수 마다 오류 처리 코드를 작성해야 하기 때문이다.
'Java > 스프링 AOP' 카테고리의 다른 글
프록시 패턴 (0) | 2023.08.04 |
---|---|
템플릿 메서드 패턴, 전략 패턴, 콜백 패턴의 차이 (0) | 2023.08.02 |
전략 패턴 (0) | 2023.08.02 |
템플릿 메서드 패턴 (0) | 2023.07.31 |
쓰레드 로컬(Thread Local) (0) | 2023.07.28 |