이전 글에서
ReactiveX는 Observer 패턴을 Iterator 패턴과 결합 하고 함수형 프로그래밍을 컬렉션과 결합하여 이벤트 시퀀스를 관리하는 이상적인 방법에 대한 요구 사항을 충족합니다.
중 RxJS를 쓰는 이유 (함수형 프로그래밍, 컬렉션)에 이어 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로 상태가 변화한다는 알림만 있었을 뿐 상태의 변화가 끝이 있다거나 예외가 있었을 때 예외를 전달해주는 흐름은 없었던 것으로 보인다.
.jpg)
하지만 ReactiveX에서는 이벤트를 비동기식 불변 배열로 보고 Iterable 패턴에서 연산하는 방식(LINQ처럼)을 적용하기 위해 Observer 패턴(onNext)에 Iterable과 동일한 역할을 할 수 있는 2가지 빠진 기능(onComplete, onError)을 추가한 것으로 보인다.
배열과 이벤트의 차이는 무엇입니까?
— Erik Meijer