RxJava 教程第一部分:为何使用RxJava
原文出處:http://blog.chengyunfeng.com/?p=947
為何使用RxJava
用戶希望查看實時的數(shù)據(jù),他們現(xiàn)在就要看最新的微博;他們的訂單立刻就被確認;價格需要現(xiàn)在定下;在線游戲需要及時響應。作為碼農(nóng),你需要發(fā)送并忘記的( fire-and-forget )消息。你不希望發(fā)送一個消息然后阻塞等待結果返回。當結果返回的時候,你希望結果推送給你。當處理的結果是一個集合數(shù)據(jù)的時候,你更希望逐個的接收到每個結果;你不希望等待整個結果集合都完成后一起返回。世界已經(jīng)進步到推送的情景了;用戶期待我們能跟上他們的步伐。碼農(nóng)有工具來推送數(shù)據(jù)了,推送數(shù)據(jù)很簡單。碼農(nóng)需要工具來響應推送的數(shù)據(jù)。
歡迎來到 RxJava 系列教程,RxJava 是由大名鼎鼎的 Netflix 公司在開發(fā)軟件過程中應用 Rx.NET 思想解決實際問題,并最總提煉出來的一套應用于 Java 的 Rx 框架。Rx 是一個優(yōu)雅解決問題的框架,functional programmer 對該框架比較熟悉。Rx 有如下一些優(yōu)點:
統(tǒng)一性(Unitive)
Rx 中的查詢是使用和 functional programming 通用的風格實現(xiàn)的,例如前面介紹的 Java 8 中的 Streams 和 Lambda表達式。在 Rx 里面,可以在事件上使用 functional 風格的轉換操作。擴展性(Extensible)
RxJava 可以自定義操作函數(shù)。雖然 Java 的語法現(xiàn)在導致自定義操作函數(shù)有點麻煩。RxJava 提供了所有的可擴展性來支持其他運行 Jvm 上語音的支持,比如 kotlin、scale 等。描述性(Declarative)
Functional transformations are read in a declarative way.組合性(Composable)
Rx 的操作函數(shù)可以組合起來形成更加復雜的操作轉換性(Transformative)
Rx 操作函數(shù)可以把一個類型的數(shù)據(jù)轉換為另外一種需要的類型,根據(jù)需要還可以過濾、映射、擴展數(shù)據(jù)流。
何時應該使用 Rx?
Rx 適合組合和消耗一系列的事件(數(shù)據(jù))。下面是一些使用 Rx 的場景:
1、應當使用 Rx
- UI 事件響應,例如 鼠標移動、按鈕點擊事件
- Domain 事件,例如 屬性改變、集合更新、訂單提交、注冊成功 等
- 基礎架構事件,例如 文件監(jiān)視、系統(tǒng)事件 等
- 集成事件,例如從一個消息隊列來的一個廣播;來自于 WebSockets - - API 的推送事件 等
- CEP 集成事件,例如 StreamInsight 或者 StreamBase.
2、可以使用 Rx
- Future 的結果或者類似的模式
這些模式已經(jīng)工作的很好的,使用 Rx 在這些情況下對開發(fā)過程并不會有太多的提升。
3、不要使用 Rx
把 iterables 變成 observables, 只是為了在 Rx 庫中使用它們。
Read more: http://blog.chengyunfeng.com/?p=947#ixzz4KaNsDUkI
總結
以上是生活随笔為你收集整理的RxJava 教程第一部分:为何使用RxJava的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android Loader机制全面详解
- 下一篇: java美元兑换,(Java实现) 美元