Rx(Reactive Extensions)とは?

非同期/イベント/時間に関する処理を、簡潔かつC#のさいきょうライブラリ

RxはObserverパターンが考え方としてとても大切になってくる。

Observerパターンについて

基本的には**観測対象(=Subject)傍観者(=Observer)**の2つの役割が存在する。

そして観測対象であるSubjectの状態が変化するとObserverに通知されるデザインパターン

→状態変化に応じた処理(非同期など)を記述する際に便利!!

また、この時観測対象であるSubjectは**Observer(の型)**を直接知らないように抽象化する。

→この抽象化を実現するのに、一般ではインターフェースが利用される。

.NET Framework 4では、SubjectのインターフェースとしてIObservable<T>ObserverのインターフェースとしてIObserver<T>が導入されている。

観測対象 傍観者(購読者)
Observerパターン Subject Observer
Rx IObservable IObserver

IObservable<T> : 観測対象(=Subject)

IObservable<T>はSubscribeメソッドのみを持っている。

IDisposable Subscribe(IObserver<T> observer)メソッド

引数で受け取ったObserverにイベント通知を行うようにする