-
RxJava 프로그래밍Rxjava 2019. 4. 21. 19:11...더보기
본 글은 RxJava 프로그래밍을 공부하고, 공부한 내용을 정리하기 위해 작성한 글입니다.
참고한 책은 한빛 미디어의 RX Java 프로그래밍입니다.
- What is Reactive?
- 데이터 흐름을 먼저 정의하고 데이터가 변경되었을 때 연관되는 함수나 수식이 업데이트되는 방식.
ReactiveX Flip 마블다이어그램. 본 다이어그램으로 보면
위에 있는 도형 - 데이터
flip - 함수
밑에 있는 도형 - 달라진 데이터
라고 필자는 이해하였다.
- 리액티브 프로그래밍은 변경된 데이터를 밀어주는 (push) 방식, 일종의 옵서버 패턴이라고 생각하면 된다.
( 필자는 push 방식과 옵서버 패턴이 무엇일까 궁금해서 찾아보았다.)- Observer Pattern이란?
- 객체가 직접 목록의 각 옵저버에게 통지하도록 하는 디자인 패턴이다.
- 주체자와 구독자의 관계 = 1 : N
(더 자세한 내용을 알고 싶으면 https://cloudstudying.kr/lectures/239에서
- Observer Pattern이란?
< Observer Pattern> - Push 방식이란?
- 데이터의 변화가 발생했을 때 변경이 발생한 곳에서 새로운 데이터를 보내주는 방식.
- 리액티브 같은 함수형 프로그래밍의 이점
Side Effect가 적다.( 멀티 스레드 환경에서도 안전하다.)
- RxJava를 만들게 된 이유
- 동시성
: 클라이언트의 요청을 처리할 때 다수의 스레드를 생성하고 그것의 결과를 취합하여 최종 리턴하는 방식이 필요함. - 조합
: Java 8에서 제공하는 CompletableFuture(작업이 완료될 때까지 기다렸다가 최종 결과를 얻음) 같은 클래스가 제공되지 않아서 비동기 흐름을 조합할 방법이 드물었다. - 콜백 지옥
: 콜백이 콜백을 부르는 방법의 개선이 필요함.
- 동시성
- 그래서 RxJava는 필터링(filter), 변환(map), 조합(reduce)을 이용해 위 3가지 이유를 해결하였다.
Ref)
* ReactiveX Flip 마블 다이어그램 - http://reactivex.io/documentation/observable.html
* Observer Pattern - https://cloudstudying.kr/lectures/239
03 옵저버 패턴 | CloudStudying
# 옵저버 패턴  ## 정의 한 객체(subject)의 상태가 바뀌면 이를 구독하는 모든 객체(observer)에게 연락이 가고, 자동 갱신되는 일대다 패턴. ## 장점 높은 복잡도(정보의 크기, 객체 규모, 객체간 관계)의 상황에서 객체간 정보 교환시 가이드 라인을 제시. ## 특징 푸시(push)방식과 풀(pull) 방식이 존재. ## 디자인 원칙 1. 바뀌는 부분은 캡슐화한다.
cloudstudying.kr
ReactiveX - Observable
Observable In ReactiveX an observer subscribes to an Observable. Then that observer reacts to whatever item or sequence of items the Observable emits. This pattern facilitates concurrent operations because it does not need to block while waiting for the Ob
reactivex.io
LIST'Rxjava' 카테고리의 다른 글
[RxJava] RxJava 기본 구조 (0) 2019.05.17 - What is Reactive?