Christmas Pikachu 콜백 매소드
개발일지/자바

콜백 매소드

ZI_CO 2022. 9. 16.

콜백 메소드는 특정 조건이 있고, 이 조건을 만족할 때마다 기능을 수행한다고 하자.

콜백을 사용하면 이벤트가 발생하여 특정 조건을 만족시켰을 경우, 콜백 함수를 호출하여 바로 기능을 수행할 수 있다. 

콜백 함수는 바로바로 사용할 수 있으며, 조건이 맞는지 틀린지 확인하는 과정을 거치지 않아도 되기에 효율적이다.

만약, 콜백을 사용하지 않고 계속 객체에 접근하는 방식으로 코드를 작성하였다고 하자.

해당 객체에 어떠한 오류가 발생할 경우 그 객체부터 접근하는 과정까지 모두 수정이 필요할 수 있다.

콜백이라는 개념을 사용하면 객체의 주소만 연결시켜주면 바로 기능을 수행할 수 있다. 

package blogpractice;

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;


// 어떠한 이벤트를 발생 시키기 위해서는 ActionListener을 사용해주어야 한다. ActionListener을 구현!!!!
	class MyFrame1 extends JFrame implements ActionListener{

		JButton button;

		public MyFrame1() {
			initData();
			setInitLayout();
			addEventListener();
		}

		private void initData() {
			setSize(500, 500);
			setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
			button = new JButton("button");
		}

		private void setInitLayout() {
			setVisible(true);
			setLayout(new FlowLayout()); // setLayout : 배치관리자 / FlowLayout정렬을 초기화 해준다.
			add(button); // FlowLayout정렬로 버튼이 배치가 된다.
		}

		private void addEventListener() {
			// 등록을 해주어야 한다. , ActionListener을 구현을 해주었기에 추상메소드를 일반 메소드로 재정의해준다. 
			// ActionListener을 구현을 해주었기에 this는 MyFrame1의 주소값을 바라 본다고 알수가있다. 
			// 즉 버튼에 addActionListener등록해주고 매개변수 this인 ActionListener인터페이스가 들어가게 되면  actionPerformed을 호출하게된다.
			button.addActionListener(this); // 버튼을 누르게되면  밑에 있는actionPerformed 호출
		}

		// 재정의 됨 
		@Override
		public void actionPerformed(ActionEvent e) { // 버튼을 눌렀을시 호출이 되는 메소드이다. 
			System.out.println("콜백 메소드");
			System.out.println("버튼이 눌러졌습니다.");
			System.out.println(e.toString());
			
		}
	}
	
	public class EventListenerEx1 {

	public static void main(String[] args) {
		new MyFrame1();
	}

}

댓글