5. Force 1 : 하나 이상의 Component에 통보
Component
Component
OBJECT
NOTIFY
6. Force 2 : Interface 로 만 통싞
Component A
OBJECT
Component B Component C
Observer Interface
Loosely Couple
7. Solution
• 하나의 컴포넌트만 게시자
• 변경사항에 종속된 모든 컴포넌트는 그 게시자의 구독자에 해당
– 구독자는 observer
Publisher
SubscriberSubscriberSubscriberSubscriberSubscriberREGISTER
NOTIFY
8. 제공 수준
• 각기 다른 클래스들이 게시자나 구독자의 역할을 할 수 있도록
– 추상 기본 클래스 도입
• 게시자는 내부 상태에 어떤 변화가 일어났을 때, 구독자에게 통지를 보낼
지 결정할 수 있다.
• 한 객체가 여러 게시자들의 구독자가 될 수 있다.
• 한 객체가 게시자이자 동시에 구독자의 역할을 모두 수행할 수 있다.
• 구독과 통지를 각기 다른 이벤트 유형으로 구분할 수 있다.
• 게시자는 구독자들에게 통지를 보낼 때 데이터 변경사항 중 일부만 선택
해 보낼 수 있다.
9. Push Model VS Pull Model
Push Model Pull Model
특징 모든 관련 정보를 NOTIFY 시
에 함께 전달
이벤트 변경만 통보.
실 데이터는 다시 가져와야 한다.
장점 Subscriber 들이 모든 정보가
필요할 때 유용
Subscriber 들이 일부 정보만 필요
할 경우
정보 변경시에 유연성이 높음
단점 전달하는 데이터 형식이 고정
되므로, 유연성 부족
메시지 전달 비용이 비싸짐
10. Variant
• GateKeeper
• Producer - Consumer
• Event Channel
– Publisher – Subscriber 의 Decouple
– Publisher 에서 바라보면 Subscriber 역할
– Subscriber 에서 바라보면 Publisher 역할