Observer Pattern

Learning/Design Pattern 2010.01.16 23:57
<옵저버 패턴을 이해하기 위해 알아야 할 세가지 요소>
1. Observer(java.util.Observer) : 말 그대로 관찰자
2. Subject(java.util.Observable) : 자신의 상태를 1번에게 알리는 발행자
3. Data : 2번이 1번에게 전달하는 정보

Observer Pattern은 일상생활에서 어렵지 않게 접할 수 있습니다. 텔레비전이나 라디오 방송, 신문 구독, 문자 알림 같은 일방적인 broadcasting을 생각하시면 되겠습니다. 어떤 방송시스템과 그것을 구독하기로 한 사람 간에는 1:N 관계가 성립하며, 가지고 있는 정보가 변화할 때마다 구독 신청을 한 사람들에게 알려줍니다.
(라디오의 경우는 불특정 다수에게 보내는 신호이므로 정확한 예는 아니라고 할 수도 있겠네요.)

Observer Pattern은 반드시 느슨한 결합(Loose Coupling)이어야 하며 Observer는 Subject에게 어떠한 영향도 미치지 않아야 합니다. Observer가 Subject에게 새로운 정보를 달라고 요청하고 싶다면 직접 Subject의 메소드를 부르지 않고 다른 중간 객체를 통하는 것이 좋을 것입니다.

* 느슨한 결합(Loose Coupling)이 가능하려면?
두개의 어떤 클래스에서도 상대방의 모습(멤버)과 행동(메소드)에 대한 정보를 최소한으로 알고 있어야 합니다. 자바에서는 인터페이스를 사용합니다.

참고 : Head First Design Patterns 2장 옵저버 패턴
저작자 표시 비영리
신고
posted by purecolor


티스토리 툴바