Observer Pattern

Observer Pattern이란?
Observer pattern은 대상(Subject)의 상태가 변하면 관찰자(Observer)에게 알려줍니다.
상태 변화를 감지하고 이에 따른 처리를 기술할 때 효과적입니다.

Subject
: 관찰 당하는 대상
Observer를 등록하는 메소드
Observer를 삭제하는 메소드
Subject의 현재 상태를 얻는 메소드
Observer에게 알리는 메소드

ConcreteSubject
: 구체적인 대상
상태가 변화하면(현재 상태를 얻는 메소드) 등록되어있는 Observer에게 전달

Observer
: 관찰자
Subject로 부터 상태 변화를 전달 받는 메소드(update 메소드)

ConcreteObserver
: 구체적인 관찰자
update() 가 호출되면 메소드 안에서 Subject의 현재 상태를 취득, 처리 


- Observer Class Diagram -



다시한번 생각해 보자면,

사실 Observer Pattern은 관찰당하는 관찰 대상이 관찰자에게 "나 지금 바뀌고 있어!"라고 쉬지 않고 말하는 것이다.
관찰자는 관찰대상이 말해주면, 그에 따라 처리만 하는 것 뿐이다.

즉, 관찰당하는 대상(Subject)가 
자신을 관찰할 관찰자(Observer)를 자신에게 등록하고, 관찰이 끝났다 싶으면 해제하고,
자신의 상태를 체크해서 상태가 변화 되었을 때, 관찰자에게 알려준다.

군필자를 위한 설명 보기








 예제 소스 코드

예제 소스코드 1


예제 소스코드 2






 MVC(Model/View/Controller)

- MVC안의 Model과 View의 관계는 Observer pattern의 Subject, Observer 역할의 관계에 대응
- Model은 표시 형식에 의존하지 않는 내부 모델을 조작하는 부분
- View는 Model이 어떻게 보일 것인지를 관리하고 있는 부분
- 하나의 Model에 복수의 View가 대응




Posted by croute

댓글을 달아 주세요