總結(jié)mvp的使用:
項目的目錄結(jié)構(gòu)data和main是主要的橘忱,base中的BasePresenter和BaseView提取了共用內(nèi)容以及做出了最基本的規(guī)范。
在實際開發(fā)中熄赡,data和main兩個目錄可有不同的人來同事開發(fā),互不影響谷羞,前提是定義好接口規(guī)則忍宋。
先看main下面的:
MainContract中定義了View和Presenter接口:
MainFragment實現(xiàn)了MainContract中的View接口:
MainPresenter實現(xiàn)了MainContract中的Presenter接口:
在MainPresenter里面構(gòu)造函數(shù)傳遞了View和ShareRepository痕貌,這個也很好理解,Presenter里面處理完邏輯后需要調(diào)用View和Data糠排。再則就是View有時候也需要Presenter舵稠,比如:當有賬號密碼輸入后點擊登錄時,這時候就需要調(diào)用Presenter的方法入宦。
MainAy實現(xiàn)了data哺徊、view、presenter的綁定:
接下來是data部分
目錄結(jié)構(gòu):
ShareDataSource為接口定義乾闰。ShareLocalDataSource落追、ShareRemoteSource、ShareDataRepository均實現(xiàn)了此接口涯肩。
local為本地數(shù)據(jù)模型轿钠,remote為網(wǎng)絡(luò)數(shù)據(jù)模型,而ShareRepository為兩則的邏輯綜合病苗,在這里判斷調(diào)用本地還是網(wǎng)絡(luò)疗垛、數(shù)據(jù)緩存等,這里面主要是對數(shù)據(jù)的操作硫朦。
總結(jié)
實際上并非所有的邏輯都在Presenter中贷腕,我的理解是MainFragment是內(nèi)容區(qū)域,但是比如標題欄阵幸,左滑欄這些還是屬于Activity,因為這些地方一般都是跳轉(zhuǎn)區(qū)域芽世,當然具體情況具體調(diào)整挚赊。 在data中Source為數(shù)據(jù)來源,即本地還是網(wǎng)絡(luò)济瓢,而Repository為來源的綜合荠割,這里面加上了本地、網(wǎng)絡(luò)的邏輯旺矾。
也就是說蔑鹦,Activity為功能的初始化、拼湊箕宙,F(xiàn)ragment為View的顯示嚎朽,Presenter為邏輯部分,data為數(shù)據(jù)的處理(緩存柬帕、請求等)哟忍。
再者實際上data下可以以一個大的功能劃分狡门,而非按界面來做。當然如果一個界面本身就非常簡單的話也沒必要追求拆分锅很。