Rx只有一條最佳實(shí)踐

Rx在一個(gè)項(xiàng)目上實(shí)踐后的總結(jié):

1、需求,還是要把需求理清野哭;否則就算是Rx也幫不上你

先對(duì)需求做功能分解,每個(gè)子功能之間可以有先后依賴幻件,以及包含關(guān)系拨黔,但功能之間的邏輯必須完全獨(dú)立,不能有依賴傲武、包含關(guān)系蓉驹;

2、Rx vs 傳統(tǒng)

傳統(tǒng)方式(過程式)做好的話揪利,也有上面的分解動(dòng)作态兴,但缺點(diǎn)很明顯,所有需求的實(shí)現(xiàn)都是HardCode疟位,基本上主流程只有一個(gè)瞻润,當(dāng)需求變化時(shí)(現(xiàn)代社會(huì)這是常事),在一處修改代碼實(shí)現(xiàn)了功能甜刻,往往需要在多處修補(bǔ)Bug绍撞,才能不破壞原有的功能,導(dǎo)致該主流程會(huì)越發(fā)臃腫得院,甚至?xí)竭_(dá)不可維護(hù)的地步傻铣;

Rx就是為了解決這個(gè)問題,拋棄了由HardCode實(shí)現(xiàn)功能的方式(此路“最終”不通)祥绞,而是采用聲明式編程(編碼方式為:定義什么情況下要做什么事)非洲,由情況(Event流)來把整個(gè)需求要做的事情串起來。

3蜕径、Rx的正確使用姿勢(shì)

需求理清的基礎(chǔ)上两踏,子功能也都分解成獨(dú)立的了,為每個(gè)子功能定義觸發(fā)的條件兜喻;

然后為該條件定義一個(gè)Observable變量梦染,功能的處理就是該Observable的訂閱(聲明式);

這些已定義的Observable就是樹的葉子朴皆,還需要找到并定義事件的源頭—即樹的根帕识;

【重點(diǎn)】仔細(xì)設(shè)計(jì)根和葉子之間的關(guān)系,從葉子這端開始回溯遂铡,只要2個(gè)葉子有重復(fù)處理的部分渡冻,就需要新建一個(gè)Observable,并定義為分杈忧便;2個(gè)分杈重復(fù)處理的族吻,再新建定義為父分杈帽借,直到最后該分杈可以單線聯(lián)系到根;

最終達(dá)到:該樹的根到每個(gè)葉子都有且只有一條“唯一路徑”超歌;

剩下就很簡(jiǎn)單砍艾,在葉子Observable上添加訂閱函數(shù)即可。

簡(jiǎn)單來說就是:定義Observable巍举,然后訂閱處理脆荷。

【反例】如果把需求實(shí)現(xiàn)插入到其他地方-如doOnNext,或一個(gè)訂閱處理了多個(gè)邏輯懊悯,就會(huì)造成邏輯混亂蜓谋,和傳統(tǒng)方式(過程式)面臨的問題一樣,而且還會(huì)更糟炭分。

反模式太多桃焕,可以認(rèn)為除了這條最佳實(shí)踐外的都存在反模式嫌疑,且了解價(jià)值不大捧毛,遂略去观堂。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市呀忧,隨后出現(xiàn)的幾起案子师痕,更是在濱河造成了極大的恐慌,老刑警劉巖而账,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件胰坟,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡泞辐,警方通過查閱死者的電腦和手機(jī)笔横,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來铛碑,“玉大人狠裹,你說我怎么就攤上這事虽界∑常” “怎么了?”我有些...
    開封第一講書人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵莉御,是天一觀的道長(zhǎng)撇吞。 經(jīng)常有香客問我,道長(zhǎng)礁叔,這世上最難降的妖魔是什么牍颈? 我笑而不...
    開封第一講書人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮琅关,結(jié)果婚禮上煮岁,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好画机,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開白布冶伞。 她就那樣靜靜地躺著,像睡著了一般步氏。 火紅的嫁衣襯著肌膚如雪响禽。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,749評(píng)論 1 289
  • 那天荚醒,我揣著相機(jī)與錄音芋类,去河邊找鬼。 笑死界阁,一個(gè)胖子當(dāng)著我的面吹牛侯繁,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播铺董,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼巫击,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了精续?” 一聲冷哼從身側(cè)響起坝锰,我...
    開封第一講書人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎重付,沒想到半個(gè)月后顷级,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡确垫,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年弓颈,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片删掀。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡翔冀,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出披泪,到底是詐尸還是另有隱情纤子,我是刑警寧澤,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布款票,位于F島的核電站控硼,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏艾少。R本人自食惡果不足惜卡乾,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望缚够。 院中可真熱鬧幔妨,春花似錦鹦赎、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至埂伦,卻和暖如春煞额,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背沾谜。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來泰國打工膊毁, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人基跑。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓婚温,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親媳否。 傳聞我的和親對(duì)象是個(gè)殘疾皇子栅螟,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)篱竭,斷路器力图,智...
    卡卡羅2017閱讀 134,628評(píng)論 18 139
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,736評(píng)論 25 707
  • 作者: maplejaw本篇只解析標(biāo)準(zhǔn)包中的操作符。對(duì)于擴(kuò)展包掺逼,由于使用率較低吃媒,如有需求,請(qǐng)讀者自行查閱文檔吕喘。 創(chuàng)...
    maplejaw_閱讀 45,623評(píng)論 8 93
  • 本篇文章介主要紹RxJava中操作符是以函數(shù)作為基本單位赘那,與響應(yīng)式編程作為結(jié)合使用的,對(duì)什么是操作氯质、操作符都有哪些...
    嘎啦果安卓獸閱讀 2,844評(píng)論 0 10
  • 讀此篇前募舟,請(qǐng)先讀: 孫悟空 我叫沐綿,是一只蛇精闻察。我忘了我何時(shí)修煉成精拱礁,可以幻化作人形了。從小聽老一輩...
    煮飯的胖子閱讀 421評(píng)論 2 2