상세 컨텐츠

본문 제목

옵저버 패턴

Back-end/JavaSpringBoot

by 본투비곰손 2022. 8. 3. 22:03

본문

728x90

관찰자 패턴 이라고 한다.
변화가 일어났을때 미리 등록된 다른 클래스에 통보해주는 패턴을 구현한 것이다.
많이 보이는 곳은 Event Listener에서 해당 패턴을 사용 하고 있다.

package com.company.design.observer;

public interface IButtonListener {
    void clickEvent(String event); // 버튼이 클릭되면 이벤트를 받을 수 있게 인터페이스 생성
}

버튼을 작성하여 클릭시 buttonListener을 통해서 이벤트를 전달 하도록 작성

package com.company.design.observer;

public class Button {

    private String name;
    private IButtonListener buttonListener;

    public Button(String name){ // 생성자에서 전달 받도록 작성
        this.name = name;
    }

    public void click(String message){ // 메세지가 일어나면 buttonListener을 통해서 전달
        buttonListener.clickEvent(message);
    }

    public void addListener(IButtonListener buttonListener) {
        this.buttonListener = buttonListener;
    }
}

버튼을 활용하여 클릭 이벤트 발생시 buttonListener을 통해 이벤트를 전달 받는다.

public class main {
    public static void main(String[] args) {

        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");
    }
}
728x90

'Back-end > JavaSpringBoot' 카테고리의 다른 글

전략 패턴  (0) 2022.08.03
파사드 패턴  (0) 2022.08.03
데코레이터 패턴  (0) 2022.08.03
프록시 패턴  (0) 2022.08.02
Adapter pattern  (0) 2022.08.01

관련글 더보기