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
'Java' 카테고리의 다른 글
java - 전략 패턴(행위 패턴) (0) | 2021.08.24 |
---|---|
java - 파사드 패턴(구조 패턴) (0) | 2021.08.24 |
java - 데코레이터 패턴(구조 패턴) (0) | 2021.08.23 |
java - 프록시 패턴(구조 패턴) (0) | 2021.08.23 |
java - 어댑터 패턴(구조 패턴) (0) | 2021.08.20 |
댓글