ReactiveX

ReactiveX(リアクティブプログラミング)は、.NETから生まれたパターンで、何らかの処理をした後にイベント通知を発行するObservableと、Observableを監視しイベント通知を受け取って処理するObserver、で構成されている。

ReactiveXを説明できるようになるシリーズその1 - ObserverとObservable - Qiita
Reactive Extensions入門「まとめ」 - かずきのBlog@hatena
Rx初心者がカウントアプリにRxを導入して全てをストリームに感じるまで - Qiita
ObserverパターンとHelloWorldからはじめるRxJava - Qiita
何となくRxJavaを使ってるけど正直よく分かってない人が読むと良さそうな記事・基礎編 - Qiita

超簡易的なReactiveXをC++で作ってみる。

まずは、interface_observable。
subscribeとnotifyだけ。

次に、interface_observer。
completed、error、nextがある。

interface_observableを継承したclass_custom_observableでは、オブザーバーリストobservers_を持つ。

subscribeでobserverを追加、notifyでobservers_の各オブザーバーに順次nextを実行していく。

interface_observerを継承したclass_custom_observerはメンバ関数の実装だけ。

nextだけ渡されたvalueを出力。他は今回実装していない。

main.cppでは、

observer1とobserver2の2つと、observableを1つ用意。
observableにobserver1とobserver2を登録。
notifyに"ABCDE"を渡して実行。

$ g++ -o main main.cpp custom_observable.cpp  custom_observer.cpp -std=c++11
$ ./main
value = ABCDE
value = ABCDE
$

このように通知される。

Sample/designpattern/reactive_x/reactive_x/src/reactive_x at master · bg1bgst333/Sample · GitHub