Observer 패턴
Observer 패턴은 객체의 상태가 변할 때 관련된 다른 객체들에게 자동으로 알림을 주는 패턴
Observer 패턴은 보통 UI 업데이트나 이벤트 처리에서 사용
구성요소
- Subject (주체): 상태를 가진 객체. 상태가 변할 때 옵저버들에게 알림 발송
- Observer (옵저버): 주체의 상태 변화에 반응하여 업데이트 처리
Pub-Sub (Publish-Subscribe) 패턴
Pub-Sub 패턴은 메시지를 발행(publish)하고 구독(subscribe)하는 시스템
발행자는 메시지를 브로커에 전달하고, 구독자는 브로커가 전달하는 메시지를 수신
구성요소
- Publisher (발행자): 메시지를 발행
- Subscriber (구독자): 특정 토픽에 대해 메시지를 수신
- Broker (브로커): 메시지를 관리하고, 구독자에게 메시지를 전달
Redux가 Pub-Sub패턴을 따른다.
메세지 큐
프로세스가 req,res가 아닌 데이터를 교환할 때 사용하는 통신방법. 메시지 지향 미들웨어(MOM) 개념을 구현한 시스템으로 비동기 메시지를 사용하는 프로그램 간 데이터 송수신 방법이다. 기존에 분산되어있던 데이터 처리를 한 곳에 집중하면서, 메시지 브로커를 두어 필요한 프로그램에 작업 분산하는 것이 목적이다. 보통 대용량 데이터 처리 배치 작업, 채팅, 알림 등 쓰인다.
비교
- Observer 패턴은 상태 변경을 감지하고 그에 따라 직접적으로 업데이트를 수행, 주체와 옵저버는 1대다 관계로 연결되어 있음, 강한 관계를 갖
- Pub-Sub 패턴은 발행자와 구독자 간의 결합을 느슨하게 하며, 중재자인 브로커를 통해 메시지를 전달, 발행자와 구독자는 직접적으로 연결되지 않음
Event Emitter
EventEmitter는 이벤트 기반 프로그래밍에서 이벤트를 발행하고, 해당 이벤트에 대한 리스너를 등록하는 메커니즘을 갖음.
Node.js에서 EventEmitter 클래스는 이벤트를 발생시키고(listener를 등록) 그 이벤트에 반응하는 콜백을 실행하는 핵심 역할을 함
이를 통해 비동기적 이벤트 처리 및 통신을 구현함
구성 요소 및 동작 방식
const EventEmitter = require('events');
// eventEmiiter 객체 생성
const myEmitter = new EventEmitter();
주요 메서드
- on(event, listener): 이벤트에 대해 리스너를 등록
- emit(event, [...args]): 이벤트를 발생시키고, 등록된 리스너들을 호출
- once(event, listener): 한 번만 실행되는 리스너를 등록. 이벤트가 발생하면 리스너가 호출된 후 자동으로 제거됨
- removeListener(event, listener): 특정 이벤트에 등록된 리스너를 제거
- removeAllListeners([event]): 특정 이벤트 또는 모든 이벤트에 등록된 모든 리스너를 제거
- listeners(event): 특정 이벤트에 등록된 모든 리스너를 반환
이벤트 흐름
- 이벤트 등록: 이벤트가 발생하면 실행될 콜백 함수를 등록
- 이벤트 발생: 특정 이벤트가 발생하면, emit 메서드를 호출하여 이벤트와 관련된 콜백 함수들을 실행
- 이벤트 처리: 등록된 콜백 함수들이 실행
'JS' 카테고리의 다른 글
| Worker Thread (0) | 2024.08.06 |
|---|---|
| 비동기 처리 (0) | 2024.07.29 |
| 함수형 프로그래밍 (2) - 일급 함수 (4) | 2024.07.25 |
| 함수형 프로그래밍 (1) - 순수함수 (0) | 2024.07.24 |
| Jest를 통해 unit테스트 진행하기 (1) | 2024.07.24 |