MVP+Retrofit+Rxjava+Dagger2 Architecture

地址

https://github.com/meybeBlank/FengArchitecture

前言

Android做了兩三年,每次都是用的別人的架構,中途也抽時間看過項目的框架的東西,一知半解,虎頭蛇尾。自己沒有從0到1的過程,能力沒法引起質變,始終還是半吊子,年初打定主意把熱門的Retrofit之類全都系統的親手敲一遍。由經歷了找工作遇到坑,再找工作安定下來的一言難盡,最後弄完已經到了年尾。這裏做一個簡單自我總結,以及自己的一些設想。

結構


目錄

base: app基礎的類、接口

common: 基礎的第三方控件、自定義控件

di:Dagger2基礎依賴 以及 業務Module

http: 網絡依賴 retrofit rxjava

utils:工具類

bussiness:具體業務。

 

contract:MVP契約類 VP接口信息

model:數據倉庫和JavaBeans

modules:service broadcast等組件

ui:略

 

Key:

Business1Module:某個Business具體業務P、V層組件提供。創建具體的Presenter與View都需要在這裏進行註冊。
B1Repository:某個Business具體數據倉庫,對Service數據進行了基本處理。
ServiceModule:某個Business具體的網絡Service,提供最原始的Retrofit Service。
BaseActivity:實現HasFragmentInjector接口解決DaggerActivity的侵入性問題。
PresentUtil:反射的方式 通過註解{@link APresenter}綁定Presenter與View。

 

使用

創建Contract,實現具體的Presenter與View,在BusinessModule註冊。

創建Service,在ServiceModule註冊。創建Repository,並別忘了@Inject。

其他也沒啥需要說的了,可以看項目裏面的兩個簡單頁面。

 

最後

當然,還有一些問題待解決。

沒有模塊化,第一次完整的籌備一個比較成熟的架構,因爲平時遇到的項目不夠大,實際用不到模塊化的東西,也就沒有考慮。

P層粒度不好把控,MVP的一點兒小瑕疵,這裏粒度分得比較細。

PresentUtils使用反射的方式進行綁定PV,不知道是否可以用APT代碼生成的方式降低性能損耗。

Presenter的Scope,爲了Component提供Contract.Presenter接口,讓View不依賴具體實現而依賴接口,但是AppComponent有不能同時支持@Single 和 @Activity,所以這裏Scope有一點兒小瑕疵。

之後具體使用再進一步進行優化吧。

同時也要感謝:
開源接口提供:https://www.jianshu.com/p/e6f072839282
大牛朋友:Rhett Lee
以及提供blog、源碼學習的童鞋些。

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章