- 변화가 일어났을 때, 미리 등록된 다른 클래스에 통보해주는 패턴
- 실 사용 예 : Event listener, swing, jwt..etc,.
예제코드 (버튼의 이벤트를 전달받아 이벤트를 처리함.)
리스너 인터페이스와 객체
public interface IButtonListener {
void clikcEvent(String event);
}
public class Button {
private Stirng name;
private IButtonListener buttonListener;
public Button(String name){
this.name = name;
}
public void click(String event){
buttonListener.clickEvent(event);
}
public void addListener(IButtonListener buttonListener){
this.buttonListener = buttonListener;
}
}
실행코드
- 옵저버 패턴 적용
public class Main {
public static void main(String[] args){
Button button = new Button("버튼");
// 버튼에 리스너 추가 - 인터페이스 구현(익명클래스로 바로 구현함)
button.addListener(new IButtonListener() {
@Override
public void clikcEvent(String event){
System.out.println(event);
}
});
//addListener의 clikcEvent()를 호출하게 된다.
button.click("메세지 전달 : click 1");
button.click("메세지 전달 : click 2");
button.click("메세지 전달 : click 3");
button.click("메세지 전달 : click 4");
}
}
Comments