반응형
RxJava 프로그래밍
제 1장, 리액티브 프로그래밍 소개
- 기존의 PULL방식의 프로그래밍 개념을 PUSH 방식의 프로그래밍 개념으로 바꾼다.
- 함수형 프로그래밍의 지원을 받는다.
- 동시성을 적극적으로 끌어안을 필요가 있다.
- 마블다이어그램
제 2장, Observable 처음 만들기
- Observable, Maybe, Flowable
- Observable 클래스는 옵저버 패턴을 구현한다. 다양한 팩토리 함수를 가지고 있다.
- RxJava 1.x 기본 팩토리 함수 : create, just, from
- RxJava 2.x 기본 팩토리 함수 : fromArray, fromInterable, fromCallable, fromFuture, fromPublisher
- Single Class : 발행과 동시에 종료됨
- Maybe Class : 발행 없이 바로 발생을 완료할 수도 있다. (0 또는 1)
- 뜨거운 Observable vs. 차가운 Observable : 기본적인 것은 차가운 Observable, 뜨거운 Observable은 구독자 상관없이 발행을 하며 발행 속도와 구독자의 처리 속도 차이가 커질 때 배압을 고려해야 한다.
- 차가운 Observable : 웹 요청, 데이터베이스 쿼리와 파일 읽기 등
- 뜨거운 Observable : 마우스 이벤트, 키보드 이벤트, 시스템 이벤트, 센서 데이터와 주식 가격 등
- Subject Class : Observable의 속성과 구독자의 속성이 모두 있다
- AsyncSubject : Observable에서 발행한 마지막 데이터를 얻어 올 수 있는 Subject Class
- BehaviorSubject : 구독자가 구독을 하면 가장 최근 값 혹은 기본 값을 넘겨주는 클래스
- PublishSubject : 구독자가 subscribe 함수를 호출하면 값을 발행, 해당 시간에 발행한 데이터를 그대로 구독자게에 전달
- ReplaySubject : 구독자가 새로 생기며 항상 데이터의 처음부터 끝까지 발행하는 것을 보장, 메모리 누구 발생 가능성
- ConnectableObservable : connect 함수를 호출한 이후에 구독한 구독자에게 구독 이후에 발생한 데이터부터 발행한다.
- 메서드 체이닝(method chaining) : 팩토리 함수와 연산자를 함께 사용하는 기법
제 3장, 리액티브 연산자 입문
- Map, flatMap, filter, reduce 기본 함수
- Map : 입력 데이터와 그것을 변환해주는 함수
- flatMap : 입력 후 발행이 Observable로 나오는 함수
- Filter : Observable에서 원하는 데이터만 걸러내는 역할을 하는 함수
- Reduce: 어떤 최종 결과 데이터를 합성할 때 활용하는 함수
- Pair 혹은 Tuple 같은 좀 더 일반화된 자료구조를 선호
제 4장, 리액티브 연산자의 활용
- 생성 연산자 : interval(), timer(), range(), intervalRange(), defer(), repeat()
- 서버와 통신을 하면 해당 서버가 잘 살아있는지 확인(이 확인 과정을 보통 ping 혹은 heartbeat이라고 함)
- 변환 연산자 : concatMap(), flatMap(), switchMap(), groupBy(), scan()
- 결합 연산자 : zip(), combineLatest(), merge(), concat()
- 조건 연산자 : amb(), takeUntil(), skipUntil(), all()
- amb : 먼저 나오는 observable을 택한다
- takeUntil : 다른 observable 값이 발행이 되면 기존 observable이 발행이 되지 않는다.
- skipUntil : 다른 observable 값이 발행이 되면 기존 observable이 발행하기 시작한다.
- all : 주어진 조건이 맞을 때 true, 아니면 false를 반환한다.
- 수학 및 기타 연산자 : delay(), timeInterval()
참고 도서
- 리액티브 프로그래밍 기초부터 RxAndroid까지 한번에 RxJava프로그래밍
- 함수형 사고(한빛미디어, 2016)
반응형
'Develop' 카테고리의 다른 글
RxJava 프로그래밍2 (0) | 2020.05.03 |
---|---|
[안드로이드 개발자를 위한 Kotlin(코틀린) 제대로 배우기 Part.1_기초1 (0) | 2020.05.03 |
개발자가 반드시 정복해야 할 객체 지향과 디자인패턴 2 (0) | 2020.02.22 |
개발자가 반드시 정복해야 할 객체 지향과 디자인패턴 1 (0) | 2020.02.22 |
이것이 자바다 - NIO 기반 입출력 및 네트워킹 (0) | 2020.02.22 |
댓글