본문 바로가기
Java/Design Pattern

[Java] 옵저버 패턴 (Observer pattern)

by 스응 2023. 4. 11.
728x90
728x90

옵저버 패턴 (Observer pattern, 콜백 메서드)

  - 한 객체의 상태가 변하면 그 객체에 의존하는 다른 객체들에게 통지되고, 자동으로 내용이 갱신됨

  - 호출이 되면 돌아감

  - 구현한 기능은 필요에 따라 가져와서 사용할 수 있게 됨

 

  - 예시] Swing의 이벤트 리스너 : https://young0105.tistory.com/83

 

 


예제 코드

1.  인터페이스 선언

더보기
1
2
3
4
5
public interface IButtonListener {
 
    void clickEvent(String event);
    
}
cs

 

2. 인터페이스를 포함 관계로 갖는 클래스 생성

더보기

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class Button {
 
    private IButtonListener iButtonListener;
    
    // setter
    public void setIButtonListener(IButtonListener iButtonListener) {
        this.iButtonListener = iButtonListener;
    }
    
    // 이벤트 메서드
    public void click(String message) {
        // setter 메서드로 인터페이스가 세팅되지 않았다면 이벤트 작동 X
        if (iButtonListener != null) {
            this.iButtonListener.clickEvent(message);
        }
    }
    
}
cs

 

3. 옵저버 패턴 설계 및 사용하기

더보기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public static void main(String[] args) {
    
    // 옵저버 패턴 설계 (콜백 메서드)
    Button button = new Button();
                                // 익명 구현 클래스
    button.setIButtonListener(new IButtonListener() {
        
        @Override
        public void clickEvent(String event) {
            // 하고 싶은 동작/알고리즘을 여기서 구현
            System.out.println("콜백 ! " + event);
        }
        
    });
    
    // 필요할 때마다 click 메서드를 통해 기능 사용
    button.click("클릭");
    
}
cs
320x100
반응형

댓글