1. Subject

<aside> 💡 Observer이자 Observable이다. Observer이기 때문에 하나 이상의 Observable을 구독할 수 있으면, 동시에 Observable이기 때문에 새로운 항목들을 방출하거나 재방출한다.

</aside>

자 무슨소리냐… 참 긴 아티클의 서막이라고 볼 수 있을거 같습니다. 그전에 Observer와 Observable이 뭐였는지 간단하게 되짚어봅시다.

observable

비동기 이벤트를 관찰이 가능한 형태로 만든 것. 해당 이벤트가 발생했을 때 항목이라는 것을 방출한다.

observer

내가 원하는 비동기 이벤트를 방출하는 observable이 있는 경우, 해당 observable을 구독하여 항목이 방출되었을 때 그 항목을 받아 처리함

1-1. 좀 더 자세히

코드를 파해치면서 찾아봅시다!

observable부터..

일단 observable을 까보면 ObservableType이란 프로토콜을 채택하는 제네릭 클래스로 구현된걸 볼 수 있다

public class Observable<Element> : ObservableType {}

⇒ Observable을 만들기 위해선 Observable이란 클래스를 사용해야 된다

observer..

우리는 지금까지 직접 observer를 만들기 보단 subscribe에서 자동으로 생성해주는 AnonymousObserver 주로 봤기 때문에 그 친구를 뒤져보자!

final class AnonymousObserver<Element> : ObserverBase<Element> { }

그러면 ObserverBase란 클래스를 상속하고 있고

class ObserverBase<Element>: Disposable, ObserverType

ObserverBase 클래스는 ObserverType이라는 프로토콜을 채택하고 있다.