Observer 패턴. 상태값에 변화가 생겼을때 옵저버들에게 알려주는 패턴이다.

Head First에서 예제로는,
기상청에서 날씨 정보가 변경되었을시에 몇가지 디스플레이에 날씨 정보를 갱신해주는..
혹은 출판사와 구독자의 관계를 옵저버 패턴으로 설명했다.

java.util.Observer;
java.util.Observable;

java.util에 Observer 인터페이스와 Observable 추상클래스가 존재하는데,
위에서 설명한 예로 보자면 출판사와 기상청은 Observable, 디스플레이와 구독자 같은 대상은 Observer가 된다.

저 두가지 클래스를 이용하면 쉽게 옵저버 패턴을 구현할 수 있다.
간단한 예의 Observable이다. 랜덤 숫자를 옵저버들에게 알려주는 일을 하고 있다.
이 Observer는 update메서드를 통해서 호출한 Observable객체와 상태값을 전달 받아서 랜덤숫자가 몇인지 확인한다.

간단한 옵저버 패턴의 예이긴하나 실제로 사용해본적이 없어서 장,단점은 정확하게 집어내기 힘들다.
그래도 단순하게 구지 꼽자면.. 일단 Observable은 Abstract 클래스이기 때문에 다중상속이 안된다.
또 Observer가 하나의 Observable에 속해있단 보장이 없다. 그러면 update에서 instanceof로 Observable을 골라내야 하는것인가..?

아마도 저런 해결책은 이미 존재할꺼라고 생각한다. 처음 접해보는 나같은 사람도 보이는데..;;
해결책에 대한건 내공이 좀 쌓이면 그때 고민해보도록 하자 -_-; 

'Design Patterns' 카테고리의 다른 글

Strategy.  (0) 2012.03.03
"OCP", Open Closed Principle  (0) 2012.02.26
"LSP", Liskov Substitution Principle  (2) 2012.02.26
"ISP", Interface Segrehation Principle  (1) 2012.02.26
"DIP", Dependency Inversion Principle  (0) 2012.02.26

+ Recent posts