💡 학습 목표
1. 콜백 메서드의 개념과 동작 방식을 이해할 수 있다.
2. 콜백 메서드를 활용한 코드를 작성할 수 있다.
3. 콜백 메서드가 필요한 상황과 그 장점을 설명할 수 있다.
0. 사전 기반 지식
- 인터페이스: Java 인터페이스의 개념을 이해하고, 메서드를 선언하고 구현하는 방법을 알고 있어야 한다.
- 익명 클래스: 클래스 정의 없이 인터페이스를 바로 구현하는 익명 클래스의 사용법을 알고 있어야 한다.
1. 콜백 메서드 개념
콜백 메서드는 특정한 작업이 완료되었을 때 또는 특정 이벤트가 발생했을 때 호출되는 메서드이다. 콜백 메서드는 주로 비동기 작업이나 이벤트 기반 시스템에서 사용된다. 콜백 메서드를 활용하면 동작을 정의하고 나중에 실행할 수 있기 때문에, 프로그램이 더 유연해지고 모듈화될 수 있다.
시나리오 코드 - 1 (버튼 클릭 이벤트 처리)
우리는 컴퓨터나 스마트폰에서 버튼을 누를 때마다 어떤 이벤트가 발생한다. 이 이벤트는 버튼이 눌렸을 때 동작할
콜백 메서드를 통해 처리된다. 예를 들어, 사용자가 버튼을 클릭할 때마다 버튼이 눌렸다는 메시지를 출력하는 프로그램을 작성할 수 있다.
package ch01;
// 콜백 메서드 만들어 보기
// 인터페이스 만들기
/*
* 버튼 클릭 이벤트 인터페이스 (콜백 메서드 정의)
*/
interface IButtonListener{
void clickEvent(String event);
}
// 버튼 클래스 설계
public class Button {
String name; // 버튼 이름
// 중요 !
private IButtonListener buttonListener; // 버튼에 연결된 리스너 (콜백메서드 활용)
public Button(String name){
this.name = name;
}
// 버튼이 클릭되었을 때 콜백 메서드 호출
public void click(String message){
if (buttonListener != null) {
buttonListener.clickEvent(message); // 버튼 클릭 이벤트 발생
}
}
public Button addEventListener(IButtonListener buttonListener){
this.buttonListener = buttonListener;
return this;
}
}
시나리오 코드 - 2 (테스트)
package ch01;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class MainTest {
public static void main(String[] args) {
List<String> nameList = Arrays.asList("강경훈", "최이제", "석지웅", "서치원", "김민경", "방민석");
List<Button> btnList = new ArrayList<>();
for (int i = 0; i < nameList.size(); i++) {
String name = nameList.get(i);
btnList.add(new Button(i + 1 + "번째 버튼").addEventListener((event) -> {
System.out.println(">> 콜벡 메서드 실행 <<");
System.out.println(name + event);
}));
}
String msg = "님 안녕하세요";
for (Button btn : btnList) {
System.out.println("--------------------------------------");
System.out.println(btn.name);
btn.click(msg);
System.out.println("--------------------------------------");
}
}
}
2. 활용 사례
콜백 메서드는 다양한 상황에서 유용하게 사용될 수 있다. 특히, 이벤트 기반 시스템이나 비동기 작업에서 많이 활용된다.
이벤트 처리 시스템: GUI 애플리케이션에서 버튼 클릭, 마우스 움직임, 키보드 입력 등의 이벤트 처리는 콜백 메서드를 통해 이루어진다.
- 예: 웹 페이지에서 사용자 클릭 이벤트 발생 시 특정 동작을 실행하는 기능.
비동기 작업 처리: 네트워크 요청이나 파일 입출력 등 시간이 걸리는 작업이 완료된 후 콜백 메서드를 통해 결과를 처리할 수 있다.
- 예: 서버에 데이터를 요청하고 응답이 왔을 때, 그 응답을 처리하는 콜백 메서드.
애니메이션 및 타이머: 애니메이션이 완료되거나 타이머가 끝났을 때, 콜백 메서드를 통해 후속 작업을 수행할 수 있다.
- 예: 웹 애니메이션이 끝났을 때, 다음 애니메이션을 시작하는 동작.
'Java > 디자인 패턴' 카테고리의 다른 글
빌더 패턴이란? (6) | 2024.09.26 |
---|---|
싱글 톤 패턴 (1) | 2024.09.25 |
S.O.L.I.D 원칙 (1) | 2024.09.25 |
템플릿 메서드 패턴 (0) | 2024.04.30 |
싱글톤 패턴 (0) | 2024.04.30 |