all white cheat sheet Dana’s Swifty Life

[Rx] Rx 기본 용어 정리 - Observable, Observer, Subject, Trait

 

Observable

event 를 내보낼 수 있는 능력 (emit)

  • event 가 흘러가는 흐름을 추상화한 것
  • Observer 패턴에서 사용하는 용어로는 Subject 라고 보면 된다.
  • Sequence, Stream 를 같은 의미로 많이 쓴다
  • Observable 이 내보내는 event를 받아 어떤 작업을 하기위해 subscribe() 메소드가 정의되어 있다.
  • Observable 은 subscribe 해야 그 때부터 event를 내보내기 시작한다.
    • 내부에서 AnonymousObserver를 생성해서 observing 하기 때문
    • subscribe 할 때마다 새로운 observer가 생김
  • Observable이 emit 하는 Event 는 세가지 종류가 있다.
    • next, error, completed
    • error, completed 이벤트 발생시 Sequence는 종료된다.

 

Observer

event를 받을 수 있는 능력 (receive)

  • Observer는 event를 외부에서 주입받을 수 있다.
  • on() 메소드의 argument로 event를 주입한다.
    • onNext(), onCompleted() 등 자주 쓰는 event 에 대한 sugar method도 있다.

 

Subject

Observable & Observer

  • Observable 인 동시에 Observer이다.
  • 따라서 event를 주입받고, 이를 내보낼 수 있는 능력을 가진다.
  • 사용 예) 사용자의 button tap event ⇢ subject 가 그 이벤트 받으면 api 찔러서 특정 데이터를 받아와서 내보냄
    • observer 능력 : button tap event를 받을 수 있음
    • observable 능력 : 데이터를 내보낼 수 있음

 

Trait

Observable 보다 좀더 좁은 개념. 더 적은 행동만 가능

  • 책에서는 다음과 같이 설명한다

    Observables with a narrower set of behavior than regular observable

  • Observable 인데 좀 더 특정된, 좁은 개념의 역할만 가능하다

  • 예를 들어 main thread 에서만 event를 내보낼 수 있도록 제한할 수 있다. 혹은 event 타입을 complete, error 만 받게도 할 수 있다.

 

📌 Reference