Retorfit+Rxjava+Rxandroid
的網絡架構MVP網絡框架(Retorfit+Rxjava+Rxandroid),使用的是Rxjava1.0
,其中的Model
層搭建過於簡單,加劇了Presenter
的任務,同時也沒有很好的解耦,沒有使用Dagger2
依賴注入框架,Presenter
的生命週期沒有和Acivity
綁定等等問題。故有此文章Model-view-presenter,簡稱MVP,是計算機軟件設計工程中一種對針對MVC模式,再審議後所延伸提出的一種軟件設計模式。java
Trygve Reenskaug
在1978年提出,是施樂帕羅奧多研究中心在20世紀80年代爲程序語言Smalltalk
發明的一種軟件架構。MVC模式的目的是實現一種動態的程序設計,使後續對程序的修改和擴展簡化,而且使程序某一部分的重複利用成爲可能。除此以外,此模式經過對複雜度的簡化,使程序結構更加直觀。軟件系統經過對自身基本部分分離的同時也賦予了各個基本部分應有的功能。專業人員能夠經過自身的專長分組:
Model-view-presenter (MVP) 是用戶界面設計模式的一種,被廣範用於便捷自動化單元測試和在呈現邏輯中改良分離關注點(separation of concerns)。android
View(UI層):這是Activities
、Fragments
和其餘標準Android components
組件所在的地方。它負責向用戶顯示從演示者接收的數據。它還處理用戶交互和輸入(點擊事件等),並在須要時觸發Presenter中的正確操做。git
Presenter:presenters訂閱「DataManager」提供的RxJava可觀察對象。他們負責處理訂閱生命週期,分析/修改「DataManager」返回的數據,並調用視圖中的適當方法來顯示數據。程序員
Model (Data Layer):它負責檢索、保存、緩存和消息數據。它能夠與本地數據庫和其餘數據存儲以及restful APIs
或第三方SDK
通訊。它分爲兩部分:helpers
和一個DataManager
。helpers
的數量因項目而異,每一個helper
都具備很是特定的功能,例如,與API
對話或在「SharedPreferences」中保存數據。DataManager
使用RxJava
操做符組合並轉換來自不一樣helper
的輸出,所以它能夠:1)向演示者提供有意義的數據;2)老是一塊兒發生的組動做。該層還包含定義數據結構如何的實際模型類。github
從右到左看圖表:算法
API
或數據庫對話到實現一些特定的業務邏輯。每一個項目都有不一樣的Helper
,但最多見的是:SQLite
數據庫中插入、更新和檢索數據。它的方法返回發出普通Java
對象的Rx Observables
可觀測值。SharedPreferences
的數據,它能夠直接返回Observables
或純Java
對象。Retrofit
與Restful APIs
進行通訊的接口,每一個不一樣的API
都有本身的Retrofit
服務。它們返回Rx Observables
。Helpers
類的引用,並使用它們來知足來自presenters
的請求。DataManager
提供的可觀察對象,並處理數據,以便在視圖中調用正確的方法。Presenter
中的適當方法進行操做。這些組件還實現與框架相關的任務,好比管理Android生命週期、填充視圖等。未完待續。。。。。數據庫
GitHub地址:Hement,持續更新中設計模式
最後說明幾點緩存
Event Bus
可是這個事件總線有必定侷限性,若是這個不存在生命週期的話,是不可以接受到的這個事件。例如:你不能發一個事件,讓某個沒有打開的View調動通知欄。