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

2023. 4. 11. 17:55·Java/Design Pattern
728x90
728x90

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

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

  - 호출이 되면 돌아감

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

 

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

 

 


예제 코드

1.  인터페이스 선언

더보기
1
2
3
4
5
public interface IButtonListener {
 
    void clickEvent(String event);
    
}
Colored by Color Scripter
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);
        }
    }
    
}
Colored by Color Scripter
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("클릭");
    
}
Colored by Color Scripter
cs
320x100
반응형
저작자표시 비영리 변경금지 (새창열림)

'Java > Design Pattern' 카테고리의 다른 글

[Java] 전략 패턴 (Strategy pattern)  (0) 2023.04.11
[Java] 싱글톤 패턴 (Singleton pattern)  (0) 2023.04.10
[Java] 어댑터 패턴 (Adapter pattern)  (0) 2023.03.27
[Java] 디자인 패턴 정리  (0) 2023.03.27
[Java] 빌더 패턴 (Builder pattern)  (0) 2023.03.23
'Java/Design Pattern' 카테고리의 다른 글
  • [Java] 전략 패턴 (Strategy pattern)
  • [Java] 싱글톤 패턴 (Singleton pattern)
  • [Java] 어댑터 패턴 (Adapter pattern)
  • [Java] 디자인 패턴 정리
스응
스응
    반응형
    250x250
  • 스응
    이서영의 개발 블로그
    스응
  • 전체
    오늘
    어제
  • 글쓰기 관리
    • 분류 전체보기 (385)
      • Java (134)
        • Base (54)
        • Spring Boot (37)
        • JSP (16)
        • Swing (GUI) (20)
        • Design Pattern (7)
      • C# (13)
      • PHP (18)
      • SQL (27)
      • Vue.js (9)
      • Tailwind CSS (4)
      • TypeScript (7)
      • HTML & CSS (27)
      • JavaScript (26)
      • jQuery (10)
      • Android (3)
      • - - - - - - - - - - - - - - (0)
      • Hotkeys (5)
      • CS (30)
      • IT Notes (13)
      • Error Notes (17)
      • Team Project (24)
        • Airlines Web Project (12)
        • University Web Project (6)
        • Strikers 1945 GUI Project (6)
      • My Project (18)
        • Library Web Project (8)
        • Pet Shopping Mall GUI Project (10)
      • etc. (0)
  • 블로그 메뉴

    • Home
    • Write
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    SWAGGER
    HTML
    Codeigniter
    C#
    Wordpress
    zapier
    cs
    jQuery
    Android
    typeScript
    Swing
    http
    SpringBoot
    SEO
    Hotkeys
    errorNote
    CSS
    tailwindcss
    git
    면접
    java
    오블완
    jsp
    개발일지
    vuejs
    js
    티스토리챌린지
    php
    SQL
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.0
스응
[Java] 옵저버 패턴 (Observer pattern)
상단으로

티스토리툴바