Click here to load reader
Upload
dae-myung-kang
View
1.165
Download
0
Embed Size (px)
Citation preview
Publisher-Subscriber Pattern
메타포: 신문 구독
싞문 메타포
• 구독자에게만 신문을 배달한다.
• 구독과 해지가 자유롭다.(실제 신문은 해지가 어렵다 -_-)
• 여러 개의 신문을 구독할 수 있다.
• 조선일보에서 한겨레 신문을 구독 할 수 도 있다.
Alias
• Observer
• Dependents
Force 1 : 하나 이상의 Component에 통보
Component Component
OBJECT
NOTIFY
Force 2 : Interface 로 만 통싞
Component A
OBJECT
Component B Component C
Observer Interface
Loosely Couple
Solution
• 하나의 컴포넌트만 게시자
• 변경사항에 종속된 모든 컴포넌트는 그 게시자의 구독자에 해당
– 구독자는 observer
Publisher
Subscriber Subscriber Subscriber Subscriber Subscriber REGISTER
NOTIFY
제공 수준
• 각기 다른 클래스들이 게시자나 구독자의 역할을 할 수 있도록 – 추상 기본 클래스 도입
• 게시자는 내부 상태에 어떤 변화가 일어났을 때, 구독자에게 통지를 보낼지 결정할 수 있다.
• 한 객체가 여러 게시자들의 구독자가 될 수 있다.
• 한 객체가 게시자이자 동시에 구독자의 역할을 모두 수행할 수 있다.
• 구독과 통지를 각기 다른 이벤트 유형으로 구분할 수 있다.
• 게시자는 구독자들에게 통지를 보낼 때 데이터 변경사항 중 일부만 선택해 보낼 수 있다.
Push Model VS Pull Model
Push Model Pull Model
특징 모든 관련 정보를 NOTIFY 시에 함께 전달
이벤트 변경만 통보. 실 데이터는 다시 가져와야 한다.
장점 Subscriber 들이 모든 정보가 필요할 때 유용
Subscriber 들이 일부 정보만 필요할 경우 정보 변경시에 유연성이 높음
단점 전달하는 데이터 형식이 고정되므로, 유연성 부족
메시지 전달 비용이 비싸짐
Variant
• GateKeeper
• Producer - Consumer
• Event Channel
– Publisher – Subscriber 의 Decouple
– Publisher 에서 바라보면 Subscriber 역할
– Subscriber 에서 바라보면 Publisher 역할