1. 程式人生 > >響應式程式設計:理解響應式程式設計

響應式程式設計:理解響應式程式設計

引言

響應式程式設計並不是一個新概念。早在90年代末,微軟的一名電腦科學家就提出了響應式程式設計。用來設計和開發微軟的某些庫。

定義

響應式程式設計(Reactive Programming,RP)的定義有很多個版本,如wikistackoverflow還有ReactiveX。但是每個版本的中心思想都是:響應式程式設計(RP)是一種基於非同步資料流概念的程式設計正規化。而RP的精髓也在於對資料流(Dataflow, Event)的高效處理。
而Rx,及Reactive Extensions,是對微軟的.NET的一個響應式擴充套件。國外的一些大牛,對Rx也有一些自己的理解,如:

The introduction to Reactive Programming you’ve been missing ,及其譯文版

RxJava

Rx,及Reactive Extensions。Rx是一種程式設計模型。Rx藉助可觀察的序列來提供一種簡單的方式來建立非同步的,基於事件驅動的程式。
2013年,Netflix第一次向世界展示了RxJava。 RxJava的主要特點有:

  • 易於併發從而更好的利用伺服器的能力
  • 易於有條件的非同步執行
  • 一種避免回撥地獄的更好方式
  • 一種響應式方法

RxJava Observable類源自於Gang of Four的觀察者模式。但有高於觀察者模式:

  • 生產者在沒有資料產生時發出通知:onComplete()
  • 生產者發生錯誤時發出通知:onError()
  • RxJava的Observable能夠組合而不是巢狀,從而避免回撥地獄

Rx程式設計思想

在傳統的指令式程式設計中,如表示式a=b+c。即把b的值和c的值相加之後,賦值給a之後,不管b和c如果變化都不會影響a;但是,在響應式的世界裡,a的值會隨著b的值或c的值變化而變化。
亦即,響應式可以將相關模型的變化直接反應到檢視上。