因為已經(jīng)有很多這方面的文章,還有這方面做得很好、令人景仰的人,所以我不打算在這里討論RxJava的好處(我假設您已經(jīng)對它有所體驗了)。但是,我將指出在Android應用程序開發(fā)方面的有趣之處,以及如何幫助我形成第一個清晰的架構(gòu)的方法。
首先,我選擇了一種響應式的模式通過轉(zhuǎn)換usecase(在這個清晰的架構(gòu)命名規(guī)則中,其被稱為interactor)返回Observables,表示所有底層都遵循這一鏈條,也返回Observables 。
?
正如你所看到的,所有用例繼承這個抽象類,并實現(xiàn)抽象方法buildUseCaseObservable()。該方法將建立一個Observables,它承擔了繁重的工作,還要返回所需的數(shù)據(jù)。
需要強調(diào)是,在execute()方法中,要確保Observables 是在獨立線程執(zhí)行,因此,要盡可能減輕阻止android主線程的程度。其結(jié)果就是會通過android主線程調(diào)度程序?qū)⒅骶€程壓入線程隊列的尾部(push back)。
到目前為止,我們的Observables啟動并且運行了。但是,正如你所知,必須要觀察它所發(fā)出的數(shù)據(jù)序列。要做到這一點,我改進了presenters(MVP模式表現(xiàn)層的一部分),把它變成了觀察者(Subscribers),它通過用例對發(fā)出的項目做出“react”,以便更新用戶界面。
觀察者是這樣的:
?
每個觀察者都是每個presenter的內(nèi)部類,并實現(xiàn)了一個Defaultsubscriber接口,創(chuàng)建了基本的默認錯誤處理。
將所有的片段放在一起后,通過下面的圖,你可以獲得完整的概念:
?
讓我們列舉一些擺脫基于RxJava方法的好處:
在觀察者(Subscribers)與被觀察者(Observables)之間去耦合:更加易于維護和測試。
從我的角度看有一點不足,甚至要為此需要付出代價,那些還不熟悉概念的開發(fā)人員還是要遵循學習曲線。但你從中得到了極有價值的東西。為了成功而reactive起來吧!
更多建議: