옵저버란?
그대로 해석하자면 관찰자라는 뜻이다.
관찰자 패턴은 변화가 일어났을 때 미리 등록된 다른 클래스에 통보해주는 패턴을 구현한 것이다.
주로 event listner 에서 사용한다.
특정 ButtonListener 인터페이스를 구현하고, 해당 버튼 인터페이스를 상속한 곳에서 click시 해당 메세지를 전달하도록 하자.
public interface IButtonListener {
public void clickEvent(String message);
}
Button 클래스를 생성한다. 해당 클래스 내에는 리스너를 추가하는 addListener와 click시 해당 리스너로 메세지를 전달하도록 내부적으로 구현한다.
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;
}
}
그럼 메인에서 Button 객체를 생성하고, 특정 리스너를 추가한 후 click 동작을 실행해보자.
아래는 클릭 이벤트시 해당 메세지를 바로 출력하도록 간단히 구현한 예제다.
/******************** 옵저버 패턴 ***********************/
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");
/****************** 결과 ****************************/
메세지 전달 : click 1
메세지 전달 : click 2
메세지 전달 : click 3
메세지 전달 : click 4
정상적으로 특정 이벤트가 발생했을 때 구현한 Listener의 클릭이벤트가 실행되는 것을 확인할 수 있다.
많이 사용되니 많이 알아두도록 하자.
참고
- 패스트캠퍼스 예상국 Backend Developer님 강의(Spring초격차)
'Backend > Java' 카테고리의 다른 글
전략 패턴(Strategy Pattern) 예제 코드로 이해하기 (0) | 2022.04.04 |
---|---|
파사드 패턴(Facade Pattern) 예제 코드로 이해하기 (0) | 2022.04.03 |
데코레이터 패턴(Decorator Pattern) 예제 코드로 이해하기 (0) | 2022.04.03 |
프록시 패턴(Proxy pattern) 예제 코드로 이해하기 (0) | 2022.04.03 |
어댑터 패턴(Adapter Pattern)예제 코드로 이해하기 (0) | 2022.03.08 |