RxJava의 근간이 되는 Observable 클래스는 소프트웨어 디자인 패턴인 Observer Pattern(1)을 근간으로 되어 있습니다.
(1) 옵서버 패턴(observer pattern)은 객체의 상태 변화를 관찰하는 관찰자들, 즉 옵서버들의 목록을 객체에 등록하여 상태 변화가 있을 때마다 메서드 등을 통해 객체가 직접 목록의 각 옵저버에게 통지하도록 하는 디자인 패턴이다. 주로 분산 이벤트 핸들링 시스템을 구현하는 데 사용된다. 발행/구독 모델로 알려져 있기도 하다.
참고글: 옵서버 패턴
Observable에는 데이터를 로딩하고 바로 그 로딩된 내용을 반영할 것인가(Hot Observable) 아니면 사용자의 요청이 있을 때까지 기다릴 것인가(Cold Observable)라는 의미의 2 종류가 있습니다.
관련 글: Observable
2022.05.29 - [Programming Android[Java]] - [RxJava] 3.Observable 란?
🟦 Cold Observable
일반적으로 우리가 사용하는 것들은 모두 Cold Observable이라고 한다.
Cold Observable은 Observable을 생성하고 Observer가 subscribe를 호출할 때까지 데이터 발행을 하지 않는다. 이 방식을 lazy Loading 기법이라고 한다.
RxJava에서 Cold Observable은 REST API와 통신 시 많이 이용되는 방법이다.
▶ Cold Observable의 예시로는 데이터베이스 쿼리, 파일 읽기, API 요청 등이 있다. 원하는 시점에 데이터를 요청하고 처음부터 끝까지 결과를 받아온다.
🟩 Hot Observable
Hot Observable은 Observer의 존재 여부와 관계없이 데이터를 발행한다.
단, Observer는 Observable이 발행하는 데이터 전부를 받는 것을 보장하지 못한다. Observer는 Hot Observable을 구독한 시점부터 발행된 데이터를 받을 수 있다.
▶ Hot Observable의 예시로는 마우스 이벤트, 키보드 이벤트, 센서 데이터 등이 있다. 가장 최근의 데이터를 처리한다.
여러 구독자가 구독하는 것이 가능하지만, 대량으로 데이터가 발생했을 때의 배압을 고려해야 한다.
관련 글: 배압 개념
2022.05.24 - [Programming Android[Java]] - [RxJava] 배압(Backpressure) 개념 이해
Cold Observable -> Hot Observable
RxJava에는 Cold Observable을 Hot Observable로 변환해주는 Class도 있다. 바로 Subject와 ConnectableObservable이다.
관련 글: Subject와 ConnectableObservable
2022.12.01 - [분류 전체보기] - [RxJava] Subject 클래스, ConnectableObservable
'Programming 개발은 구글로 > JAVA[Android]' 카테고리의 다른 글
[안드로이드][활용] 비즈니스 계정으로 게시물 가져오기 (0) | 2022.06.09 |
---|---|
[RxJava] Single 개념 이해 (0) | 2022.06.05 |
[RxJava] 1. RxJava 란? (0) | 2022.05.30 |
[RxJava] 3.Observable 란? (0) | 2022.05.29 |
[RxJava] 6.Scheduler (0) | 2022.05.29 |
댓글