SingleTone & Pub-Sub

Jun·2022년 5월 11일
0

네이버 부스트캠프

목록 보기
12/21

1. Single-tone Pattern


  • 어떤 프로그램을 만들다 보면, 어떤 클래스의 객체가 해당 프로세스내에서 딱 하나만 만들어져 있어야 할 때가 있다.
  • 웹의 다크모드를 예로 들면, 페이지를 이동하더라도 다크 모드 세팅은 그대로 유지되어야 한다.
  • 즉, 어떤 페이지에 있든 이 세팅을 관리하는 객체는 반드시 같아야하므로, 이 객체는 하나만 만들어져있도록 해야한다.

스크린샷 2022-03-21 오후 6 57 23


class PublisherCenter {
  static instance = null;
  subscribers = [];

  constructor() {
    if (PublisherCenter.instance === null) {
      PublisherCenter.instance = this;
    }
    return PublisherCenter.instance;
  }
}

const p1 = new PublisherCenter();
const p2 = new PublisherCenter();

console.log(p1 === p2); // true

2. Publish Subscribe Pattern


  • pub-sub 패턴은 observer 패턴과 유사하다.
  • 따라서 observer 패턴을 먼저 살펴보자

2.1 Observer Pattern


옵서버 패턴(observer pattern)은 객체(subject)의 상태 변화를 관찰하는 관찰자들, 즉 옵저버들(observers)의 목록을 객체에 등록하여 상태 변화가 있을 때마다 메서드 등을 통해 객체가 직접 목록의 각 옵저버에게 통지하도록 하는 디자인 패턴이다. 주로 분산 이벤트 핸들링 시스템을 구현하는 데 사용된다.

다운로드_(8)

2.2 Pub-Sub Pattern


발행-구독 모델은 비동기 메시징 패러다임이다. 발행-구독 모델에서 발신자의 메시지는 특별한 수신자가 정해져 있지 않다. 대신 발행된 메시지는 정해진 범주에 따라, 각 범주에 대한 구독을 신청한 수신자에게 전달된다. 수신자는 발행자에 대한 지식이 없어도 원하는 메시지만을 수신할 수 있다.

다운로드_(9)

2.3 Observer와 Pub-Sub의 차이


  • Observer패턴은 Publisher 와 Subscriber가 직접적으로 연결되어 있다.
  • 반면에 Pub-Sub 패턴은 중간에 브로커가 존재하여 이벤트를 전송하기 때문에 서로의 존재를 몰라도 된다.
  • 즉 Pub은 브로커에 이벤트를 던저 놓으면 브로커를 통해 그 이벤트에 해당되는 Sub에게 전달되는 구조이다.

1_(3)

  • Observer 패턴은 대부분 동기 방식이지만, Pub-Sub은 대부분 비동기 방식이다.
profile
HiHi

0개의 댓글