Observer패턴은 Observer, Subject가 서로를 인지하지만, Pub - Sub패턴의 경우 서로를 전혀 몰라도 상관없다.
즉, Observer패턴의 경우 Subject에 Observer을 등록하고 Subject가 직접 Observer에 직접 알려주어야 한다.
Pub - Sub 패턴의 경우 Publisher가 Subscriber의 위치나 존재를 알 필요없이 Message Queue와 같은 Broker역할을 하는 중간지점에 메시지를 던져 놓기만 하면된다.
반대로 보면, Subscriber역시 Publisher의 위치나 존재를 알 필요없이 Broker에 할당된 작업만 모니터링하다 할당 받아 작업하면 되기 때문에 Publisher와 Subscriber가 서로 알 필요가 없다.
Observer패턴에 비해 Pub-Sub패턴이 더 결합도가 낮다.
서로 존재를 알 필요가 없기 때문에 당연히 소스코드 역시 겹치거나 의존할 일이 없다.
Observer패턴은 대부분 동기방식으로 동작하나, Pub-Sub패턴은 대부분 비동기 방식으로 동작한다 publisher가 연산해야 할 일(task)을 발행(publish)하면 그 task의 범주를 구독(subscribe)한 수신자가 받아 대신 일을 처리한다. 그 시간동안 publisher는 다른 작업을 수행할 수 있다.
옵저버 패턴은 단일 도메인(=하나의 앱)에서 동작해야 하며 pub/sub 발행 구독은 크로스 도메인(=다른앱) 상황에서도 동작이 가능하다.
크로스도메인이란, 네이버나 카카오 같은 서로 다른 도메인을 의미.
발행-구독 패턴(Publisher-Subscriber Pattern)이란?
이전 글 옵저버 패턴(Observer Pattern)이란? 옵저버 패턴 옵저버 패턴은, 옵저버들의 목록을 객체(관찰하려는 대상)에 등록하여 객체가 상태 변화가 있을 때 마다 메서드 등을 통해 객체가 직접 목록
gobae.tistory.com
'Frontend' 카테고리의 다른 글
Zustand - 상태 관리 라이브러리(굉장히편하다) (0) | 2022.06.27 |
---|---|
Next.js 간략한 정리.. (0) | 2022.06.26 |
package.json에 대해 아시나요? (0) | 2022.05.26 |
함수 선언식과 표현식의 차이점(일반 함수와 화살표 함수의 차이점은?) (0) | 2022.04.25 |
React에서 state를 왜 직접 수정하면 안될까? (0) | 2022.04.23 |