본문 바로가기
Java

java - 옵저버 패턴(행위 패턴)

by sinabeuro 2021. 8. 23.
728x90

Observer pattern

관찰자 패턴은 변화가 일어났을 때 미리 등록된 다른 클래스에 통보해주는 패턴을 구현한 것이다.

많이 보이는 곳은 event listener에서 해당 패턴을 사용하고 있다. 

스윙이나 자바의 gui프로그래밍이나 안드로이드 프로그래밍할 때 이벤트리스너를 달게 되는데 이것이 바로 이벤트 옵저버패턴이다. 

쉽게 말하자면 망을 보는 객체를 하나 만들어서 변화가 일어나면 망을 보는 객체가 변경 사항을 전달하는 것이다.

 

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

 

// Button.java
public class Button {

    private String name;
    private IButtonListener buttonListener;

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

    public void click(String message) {
        buttonListener.clickEvent(message);
    }

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

옵저버 패턴을 위한 addListener 메소드를 만들어줍니다.

 

// main.java
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("메세지 전달 : click 1");
        button.click("메세지 전달 : click 2");
        button.click("메세지 전달 : click 3");
        button.click("메세지 전달 : click 4");

    }
}

addListener 메소드 호출 시 익명 클래스를 만들어서 인자 인터페이스의 메소드를 정의합니다.

 

728x90

댓글