EventListener

Jan 28, 2024
EventListener

1. EventListener란?

이벤트를 감지하고 처리하는 역할을 담당하는 인터페이스 또는 클래스 이벤트가 발생했을 때, 그에 대한 반응을 정의하고 처리하는 역할을 한다. 이를 위해 특정 이벤트를 감지하기 위한 메소드나 콜백 함수를 제공한다. 이벤트가 발생하면, 등록된 EventListener는 해당 이벤트를 처리하고 필요한 동작을 수행한다.
미리 알고있는 이벤트 > 내가 미리 알고 있으니까 보고 있을 친구(메소드, 콜백 함수) 필요x 언제 올 지 모르는 이벤트 > 이벤트를 감지할 친구(Listener)가 필요 * 이벤트가 발생하는 걸 계속 지켜보기 때문에 Listener는 '데몬'이다. * 얼마에 한번씩 도는지도 알려줘야 함. 안 그러면 최고속도로 막 아아악~~!! 하고 돈다. 컴퓨터의 풀 자원을 써버리니까 꼭 알려주기!
💡
이벤트는 사용자의 동작(클릭, 마우스 움직임 등)이나 시스템에서 발생하는 상황(타이머 만료, 네트워크 연결 등)을 의미한다.
💡
콜백 함수는 일반적으로 함수 포인터, 인터페이스, 람다식 등의 형태로 전달
 

2. 이벤트 감지 시간

  • 시간을 길게 잡으면 : 이벤트 감지가 더뎌짐 / 리소스 자원이 적게 든다.
  • 시간을 짧게 잡으면 : 이벤트 감지가 빠르다 / 자원을 넘 많이 먹는다.
  • 핑(반응 속도)가 0.045초 (45ms) 정도만 되어도 > 사용자는 느리다고 느낌. (이벤트 버튼을 내가 눌렀을 때 바로 반응하면 좋은 것!)
  • 이 반응 속도가 Listener랑 연관되어 있다. 0.03 정도면 빠르다고 생각함. Listener가 0.03초마다 돌면서 이벤트를 확인해줘야 함.
 

3. EventListener 예시

notion image
이벤트는 감지해줄 건데, 이벤트를 감지했을 때 어떤 행위를 해야하는지는 모르는 코드 > 빈 껍데기만 존재. > 개발자한테 구현을 맡김
notion image
EventListener을 구현한다.
notion image
action() 메소드 오버라이드 Button 클래스가 EventListener 인터페이스의 action() 메소드를 구체적으로 구현한 결과물이며, 따라서 구현체의 일부이다. (Button 클래스의 action() 메소드 구현체 > 회원가입 로직이 실행됩니다.)
💡
구현체란? 인터페이스나 추상 클래스에서 정의된 메소드를 실제로 구현한 클래스
notion image
notion image
이렇게 별 쓸모없는 Button 클래스를 new하려고 보니 너무 번거롭다! > 람다식 사용
 

 
package ex07.example; // 라이브러리 판매자가 생성 interface EventListener { void action(); } // 라이브러리 판매자가 생성 // click을 실행하는게 목적 class MyApp { public void click(EventListener l) { l.action(); } } public class InterEx02 { public static void main(String[] args) { MyApp app = new MyApp(); app.click(() -> { //람다식을 매개변수로 받음. System.out.println("회원가입 로직이 시작됩니다."); }); } }
 
notion image
 
 
Share article

codingb