투케이2K

270. (java/자바) class , interface 사용해 콜백 (callback) 패턴 정의 및 수행 실시 본문

Java

270. (java/자바) class , interface 사용해 콜백 (callback) 패턴 정의 및 수행 실시

투케이2K 2022. 6. 30. 16:00

[개발 환경 설정]

개발 툴 : Eclipse

개발 언어 : Java

 

[소스 코드]

package ex6;

// [콜백 패턴 정의 클래스]
class CallObject {
	
	
	// [내부 인터페이스 정의 실시]
	interface CallBack {
		public void onMessage(String message);
	}
	
	
	// [전역 변수 선언 실시]
	CallBack callback;
	
	
	// [클래스 생성자 초기화 실시]
	public CallObject() {
		this.callback = null; // [초기화]
	}
	
	
	// [콜백 지정 메소드 정의 실시]
	public void setCallBack(CallBack callback) {
		this.callback = callback; // [매핑]
	}
	
	
	// [콜백 실행 메소드 정의 실시]
	public void excute(String inputData) {
		
		// [인풋으로 들어온 데이터를 그대로 CallBack 인터페이스 onMessage 메소드로 전달]
		this.callback.onMessage(inputData);
	}
}





// [콜백 패턴 수행 클래스]
public class MainActivity16 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("");
		System.out.println("================================");
		System.out.println("[Program Start]");
		System.out.println("================================");
		System.out.println("");
		
		
		// [CallObject 클래스 객체 생성 실시]
		CallObject callObject = new CallObject();
		
		
		// [콜백 리턴 이벤트를 받을 수 있는 메소드 정의 실시]
		callObject.setCallBack(new CallObject.CallBack() {
			@Override
			public void onMessage(String message) {
				// TODO Auto-generated method stub
				System.out.println("");
				System.out.println("================================");
				System.out.println("[callback] : [onMessage]");
				System.out.println("[message] : " + message);
				System.out.println("================================");
				System.out.println("");
			}
		});
		
		
		// [excute 수행 실시]
		for (int i=1; i<=2; i++) {
			System.out.println("");
			System.out.println("================================");
			System.out.println("[excute] : [콜백 명령 전달] : " + String.valueOf(i));
			System.out.println("================================");
			System.out.println("");
			
			callObject.excute(String.valueOf(i) + " : 투케이");
			
		}

	} // [메인 종료]

} // [클래스 종료]
 

[결과 출력]


 

반응형
Comments