ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ReactiveX
    Search: SwDevTheory SwDevTheory 2022. 8. 3. 21:09

    ReactiveX, RxJava연관(Java와 달리 Kotlin에서는 Coroutines사용)

     

    ReactiveX

    ReactiveX is a library for composing asynchronous and event-based programs by using observable sequences.
    ReactiveX는 Observable squences(관찰가능한 시퀀스)를 사용하여 비동기 및 이벤트 기반 프로그램을 구성하기 위한 라이브러리다.

     

    Observer pattern(관찰자 패턴) 

    관찰자 패턴은 주제 객체가 관찰자 라는 종속 항목의 목록을 유지 관리하고, 상태 변경 사항을 관찰자들에게 알리는 소프트웨어 디자인 패턴 이다 .

    주로 분산 이벤트 처리 를 구현하는 데 사용된다.시스템, "이벤트 기반" 소프트웨어. 이러한 시스템에서 주체는 일반적으로 "사건의 흐름" 또는 "사건의 흐름 소스"로 명명되는 반면 관찰자는 "사건의 싱크"라고 불린다. 스트림 명명법은 관찰자가 물리적으로 분리되어 주체/스트림 소스에서 방출된 이벤트를 제어할 수 없는 물리적 설정을 암시한다.

    주제의 객체의 유일한 책임은 관찰자 목록을 유지하고 update()작업을 호출하여 상태 변경을 알리는 것이다.
    관찰자의 책임은 주제에 자신을 등록(및 등록 취소)하고(상태 변경 알림을 받기 위해) 알림을 받았을 때 상태를 업데이트(자신의 상태를 주제의 상태와 동기화)하는 것이다.
    이것은 주체와 관찰자를 느슨하게 결합시킨다. 서로에 대한 명확한 지식이 없다. 관찰자는 런타임에 독립적으로 추가 및 제거할 수 있다

    https://en.wikipedia.org/wiki/Observer_pattern

    Observer pattern(관찰자 패턴) 을 확장 하여 데이터 및/또는 이벤트의 시퀀스를 지원하고 낮은 수준의 스레딩, 동기화, 스레드 안전성, 동시 데이터 구조 및 I/O 차단.

     

      single items multiple items
    synchronous T getData() Iterable<T> getData()
    asynchronous Future<T> getData() Observable<T> getData()

     

     

    Iterable을 사용하면 소비자가 생산자에서 값을 가져오고 해당 값이 도착할 때까지 스레드가 차단됩니다. 이와 대조적으로 Observable을 사용하면 값을 사용할 수 있을 때마다 생산자가 소비자에게 값을 푸시한다. 이 접근 방식은 값이 동기식 또는 비동기식으로 도착할 수 있으므로 보다 유연하다.

    Iterable와 Observable에 적용할 수 있는 방법을 보여주는 예제 코드

    Iterable Observable
    getDataFromLocalMemory()
      .skip(10)
      .take(5)
      .map({ s -> return s + " transformed" })
      .forEach({ println "next => " + it })
    getDataFromNetwork()
      .skip(10)
      .take(5)
      .map({ s -> return s + " transformed" })
      .subscribe({ println "onNext => " + it })

     

    https://reactivex.io/intro.html

     

    댓글