본문 바로가기

프로그래밍/Java

Java_옵저버 패턴

옵저버 패턴

: '이벤트'를 감시하여 이벤트가 발생할 때마다 미리 정의해둔 동작을 수행하게 해주는 프로그래밍 패턴을 옵저버 패턴이라고 한다.

ex) eventListener와 같이 키보드를 눌렀을 때, 버튼을 눌렀을 때 이벤트가 발생했다 할 수 있다.

 

옵저버 패턴을 구현하기 위해서는

1. 인터페이스가 필요하다.
2. 인터페이스를 포함관계로 선언한다.
3. 인터페이스를 구현한 클래스를 받을 setter 메서드를 만든다.

 

옵저버 패턴 예제

IButtonListener 인터페이스

1
2
3
public interface IButtonListener {
    void clickEvent(String event);
}
cs

Button.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class Button {
    
    private String name;
    private IButtonListener iButtonListener;
    
    public Button(String name) {
        this.name = name;
    }
    
    // setter 만들어주기 !
    public void setIButtonListener(IButtonListener iButtonListener) {
        this.iButtonListener = iButtonListener;
    }
    
    public void click(String message) {
        // 콜백 메서드 - 호출이 되면 돌아간다.
        if(iButtonListener != null) {
            this.iButtonListener.clickEvent(message);
        }
    }
}
cs

MainTest.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class MainTest1 {
    
    // main 함수
    public static void main(String[] args) {
        
        // 코드 흐림이 원래는 순차적으로 진행되는데 
        // 이벤트가 일어나면 다시 수행한다.
        Button btn = new Button("btn1");
        
        // 인터페이스 --> 익명 클래스 --> 익명 구현 클래스
        button.setIButtonListener(new IButtonListener() {
        
            @Override
            public void clickEvent(String event) {
                // 여기에 하고 싶은 동작, 알고리즘을 구현하면 된다.
                System.out.println("콜백 들어왔어 \n" + event);
            }
        
        });
        
        btn.click("이게 콜백이야?");
        btn.click("옹 옵저버 패턴이라고도 불려");
    } // end of main
// end of class
cs

콘솔 화면

'프로그래밍 > Java' 카테고리의 다른 글

Java_BeanUtils.copyProperties()  (0) 2024.01.14
Java_스트림(Stream)  (0) 2023.04.09
Java_어댑터 패턴  (0) 2023.03.27
Java_템플릿 메서드 패턴, 싱글톤 패턴, 빌더 패턴  (1) 2023.03.23
Java_람다식(Lambda Expression)  (1) 2023.03.22