☎️ Observer design pattern & Listener
Language/Java

☎️ Observer design pattern & Listener

Observer design pattern & listener

옵저버 패턴이라는 것을 알 수 있는 키워드는 "listener"이다. 만약 자바 코드에서 listener를 발견한다면 아! 옵저버 패턴을 적용하였구나로 이해하면 쉽다.

 

지금부터 옵저버 패턴에 대해서 알아보자!

 

옵저버 패턴과 관찰자

 

위의 그림은 옵저버 패턴에 대한 내용을 나타낸 것이다. 보호관찰사와 가석방죄수의 예를 들면 쉽게 이해할 수 있을 것이다.

 

보호관찰사의 역할은 가석방죄수를 감시하는 것이다. 가석방 죄수는 어떠한 행위를 할 때 보호관찰사에게 보고하도록 시스템화 되어 있다. 즉 보호관찰사가 24시간 감시하는 것이 아니라는 소리다. 이를 똑같이 자바코드에 적용하면 다음과 같다.

 

어떠한 객체는 Observer 객체의 주소를 가지고 있다. 그리고 해당 객체의 상태가 변화할 때마다 Observer 객체에게 알려준다. 사실 감시라고 해서 Observer객체에서 해당 객체의 주소를 가지고 있을것이라고 착각하기 쉬운데 그렇지 않다는 것을 명심하자

 

엄밀히 말하면 Observer(관찰자)보다 Listener(청취자)가 와닿을 수 있다. 어떠한 객체의 변동사항에 대한 보고를 듣는 입장이기 때문이다. 그래서 자바에서는 Listener라는 이름을 자주 사용한다.

 

옵저버 패턴3

Objserver = Listener = Subscriber(수신자)

Subject = Publisher(발행자)

다시한번 정리하자면 어떠한 객체가 특장 상태에 놓이게 되면 Observer interface의 규칙에 따라 메서드를 호출한다. 그 결과 객체가 특정 상태일 때 기능을 추가 삭제하기가 쉬워진다.

addListener() // 리스너를 추가한다.
removeListener() // 리스너를 삭제한다.
listners : List // 리스너를 모아놓은 리스트

contextInitialized() // 시작
contextDestroyed() // 종료