반응형
관찰자 패턴이라고 하며 변화가 일어 났을 때 , 미리 등록된 다른 클래스에 통보해주는 패턴을 구현한 것이다. 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 메서드 실행시 리스너로 메세지가 전달되고 출력되는 형태이다
반응형
'DesignPattern' 카테고리의 다른 글
디자인 패턴 5 - decorator pattern (0) | 2021.05.05 |
---|---|
디자인 패턴 4 - proxy pattern (0) | 2021.05.05 |
디자인 패턴 3 - Adapter pattern (0) | 2021.05.05 |
디자인 패턴 2 - Singleton pattern (0) | 2021.05.05 |
디자인 패턴 1 - 디자인 패턴이란? (0) | 2021.05.05 |