RxJS를 쓰는 이유 (Observer, Iterator 패턴)

최낙원·2021년 12월 29일
0

이전 글에서

ReactiveX는 Observer 패턴Iterator 패턴과 결합 하고 함수형 프로그래밍을 컬렉션과 결합하여 이벤트 시퀀스를 관리하는 이상적인 방법에 대한 요구 사항을 충족합니다.

RxJS를 쓰는 이유 (함수형 프로그래밍, 컬렉션)에 이어 Observer 패턴Iterator 패턴을 결합했다는 이유를 간략히 정리하였다.

Observer 패턴Iterator 패턴의 결합

(ReactiveX의) Observable 타입은 GOF의 Observer 패턴에 부족했던 Iterable 타입에서 사용할 수 있었던 것과 대응되는 2개의 의미가 추가되었다.

The Observable type adds two missing semantics to the Gang of Four’s Observer pattern, to match those that are available in the Iterable type:

원문

원래 Observer 패턴에는 setState -> update -> getState로 상태가 변화한다는 알림만 있었을 뿐 상태의 변화가 끝이 있다거나 예외가 있었을 때 예외를 전달해주는 흐름은 없었던 것으로 보인다.
A sample UML class and sequence diagram for the Observer design pattern. CC BY-SA 4.0 ref: http://w3sdesign.com/?gr=b07&ugr=struct

하지만 ReactiveX에서는 이벤트를 비동기식 불변 배열로 보고 Iterable 패턴에서 연산하는 방식(LINQ처럼)을 적용하기 위해 Observer 패턴(onNext)에 Iterable과 동일한 역할을 할 수 있는 2가지 빠진 기능(onComplete, onError)을 추가한 것으로 보인다.

배열과 이벤트의 차이는 무엇입니까?
— Erik Meijer

profile
한 발자국 성장하는 개발자

0개의 댓글