본문 바로가기

개인적으로 공부한 것을 정리해 놓은 블로그입니다 틀린 것이 있으면 댓글 부탁 드립니다!


DesignPattern

디자인 패턴 6 - Observer pattern

반응형

관찰자 패턴이라고 하며 변화가 일어 났을 때 , 미리 등록된 다른 클래스에 통보해주는 패턴을 구현한 것이다. java swing jwt android의   event listener 에서 해당 패턴을 사용 하고 있다 . 

 

 

자바 스윙의 이벤트 리스너를 통한 Obsever pattern 예시 

 

 

IButtonListener 인터페이스 

 

package com.company.observer;

public interface IButtonListener {
    void clickEvent(String event);
}

 

 

Button 클래스 

 

package com.company.observer;

public class Button {
    private String name;
    private IButtonListener buttonListener;

    public Button(String name) {
        this.name = name;
    }

    //클릭시 버튼 리스너에게 이벤트를 넘겨준다.
    public void click(String message){
        buttonListener.clickEvent(message);
    }

    //스윙의 버튼 리스너처럼 addListener 메소드를 통해 리스너 추가
    public void addListener(IButtonListener buttonListener){
        this.buttonListener = buttonListener;
    }
}

 

 

 

메인 메서드

public static void main(String[] args) {

        //Observer pattern

        //버튼 생성
        Button button = new Button("버튼");

        //버튼에 리스너 등록
        button.addListener(new IButtonListener() {
            //이벤트리스너를 통해 출력됨
            @Override
            public void clickEvent(String event) {
                System.out.println(event);
            }
        });

        button.click("메시지전달: click1");
        button.click("메시지전달: click2");
        button.click("메시지전달: click3");
        button.click("메시지전달: click4");


    }

  

버튼 클릭시 이벤트가 작동할 수 있도록 버튼에 리스너를 달아준다. 리스너를 등록하면 button 클래스 필드에 할당 되고

click 메서드 실행시 리스너로 메세지가 전달되고 출력되는 형태이다 

 

반응형