![]() |
| http://reactivex.io/documentation/operators/merge.html
前言: 最近Rx相關的議題在Android圈特別熱門,除了在Android Weekly裡面的文章幾乎都會擦到邊,又或者很多公司直接把這個架構導入產品之中;對我來說,原本某些code就已經有這個概念的影子,例如Async的操作,我們是用Parse推出的Bolts來實踐Defer/Promise,但Rx的概念更為通用,這表示Async的功能只是其中之一;學習Design Pattern最重要的是套用實際案例,所以以後Practice Reative(Rx)的系列文章,將針對各個component如何套用到實際的問題為目標。
今天要聊到merge,其概念就是將數個Observable合併起來,你可以用在把所有Error report的Observable合併,再透過統一方式去處理,而此範例將搭配RxBinding跟map來解決Report Flurry Event的問題。
|
2016年1月2日 星期六
Practice Reative(Rx) - merge
2015年8月23日 星期日
Implementation of Undo/Redo on Android
秀了幾行code給我看後,感覺這個設計架構根本就超好,結果Android內建沒有這套實作,結果它藏在Android Framework裡,而且命名規則也很iOS(每一個Command叫做Operation),感覺是給內部UI Widget用的功能。
解決這類型問題也有常用的Design Pattern,在SO找到這篇推薦Command Pattern,有空再來消化這個Pattern的其他應用方式。
2014年2月9日 星期日
Deferred & Promise
最近同事在解High Resolution issue的時候用到了Deferred/Promise的Design Pattern
問題是這樣子,要同時讀取及輸出N個圖片,但同時可以用M個Worker進行以節省時間,而圖片輸出的順序必須依照z-order排序,這表示圖片B輸出時必須等圖片A輸出完成。
這個問題的關鍵在於Task之間必須有Dependency的觀念,如果純用JAVA硬幹是可以用Thread Pool再加上Callable/Future實現,但針對這種問題已經有Deferred/Promise的設計概念可以使用。
簡單介紹一下D&P的概念(如上圖所示),如果Task之間有Dependency,甚至是帶入參數必須等前一個Task完成才能決定時,就非常適合使用它。
在jQuery 1.5之後已經有直接內建DeferredObject
http://api.jquery.com/category/deferred-object/
在Go的語言也是
http://golang.org/doc/effective_go.html#defer
Python也有人包library
http://twistedmatrix.com/documents/13.0.0/core/howto/defer.html
Java雖然不是內建但也有人包成library : jDeferred,當然也有Android的support
https://github.com/jdeferred/jdeferred
最近Parse也release一款類似的library : Bolts (iOS/Android supported)
https://github.com/BoltsFramework/
參考鏈結:
What are the differences between deferred promise and future in JS
http://stackoverflow.com/questions/6801283/what-are-the-differences-between-deferred-promise-and-future-in-javascript
訂閱:
文章 (Atom)

