Publisher subscriber pattern

10

Click here to load reader

Transcript of Publisher subscriber pattern

Page 1: Publisher subscriber pattern

Publisher-Subscriber Pattern

[email protected]

Page 2: Publisher subscriber pattern

메타포: 신문 구독

Page 3: Publisher subscriber pattern

싞문 메타포

• 구독자에게만 신문을 배달한다.

• 구독과 해지가 자유롭다.(실제 신문은 해지가 어렵다 -_-)

• 여러 개의 신문을 구독할 수 있다.

• 조선일보에서 한겨레 신문을 구독 할 수 도 있다.

Page 4: Publisher subscriber pattern

Alias

• Observer

• Dependents

Page 5: Publisher subscriber pattern

Force 1 : 하나 이상의 Component에 통보

Component Component

OBJECT

NOTIFY

Page 6: Publisher subscriber pattern

Force 2 : Interface 로 만 통싞

Component A

OBJECT

Component B Component C

Observer Interface

Loosely Couple

Page 7: Publisher subscriber pattern

Solution

• 하나의 컴포넌트만 게시자

• 변경사항에 종속된 모든 컴포넌트는 그 게시자의 구독자에 해당

– 구독자는 observer

Publisher

Subscriber Subscriber Subscriber Subscriber Subscriber REGISTER

NOTIFY

Page 8: Publisher subscriber pattern

제공 수준

• 각기 다른 클래스들이 게시자나 구독자의 역할을 할 수 있도록 – 추상 기본 클래스 도입

• 게시자는 내부 상태에 어떤 변화가 일어났을 때, 구독자에게 통지를 보낼지 결정할 수 있다.

• 한 객체가 여러 게시자들의 구독자가 될 수 있다.

• 한 객체가 게시자이자 동시에 구독자의 역할을 모두 수행할 수 있다.

• 구독과 통지를 각기 다른 이벤트 유형으로 구분할 수 있다.

• 게시자는 구독자들에게 통지를 보낼 때 데이터 변경사항 중 일부만 선택해 보낼 수 있다.

Page 9: Publisher subscriber pattern

Push Model VS Pull Model

Push Model Pull Model

특징 모든 관련 정보를 NOTIFY 시에 함께 전달

이벤트 변경만 통보. 실 데이터는 다시 가져와야 한다.

장점 Subscriber 들이 모든 정보가 필요할 때 유용

Subscriber 들이 일부 정보만 필요할 경우 정보 변경시에 유연성이 높음

단점 전달하는 데이터 형식이 고정되므로, 유연성 부족

메시지 전달 비용이 비싸짐

Page 10: Publisher subscriber pattern

Variant

• GateKeeper

• Producer - Consumer

• Event Channel

– Publisher – Subscriber 의 Decouple

– Publisher 에서 바라보면 Subscriber 역할

– Subscriber 에서 바라보면 Publisher 역할