標籤:網路通訊 相對 說明 返回結果 service 通訊 引用 alt mvvm
前言說明
在實戰項目及學習中來總結一下Android端項目構架
包括MVC、MVP、MVVM,主要針對移動Android端
該篇只描述橫向構架模型
目錄
1.構架基礎
2.橫向構架模型
3.縱向構架流程
4.代碼例子
2.橫向構架模型
MVC構架
綜合說明:
以manager作為controller層
activity/fragment(view)調用manager(controller)處理請求
manager(controller)調用NetHelp(model)處理商務邏輯
虛線代表返回結果
NetHelper網路通訊使用AsyncTask+URLConnection實現
MVP構架
綜合說明:
presenter接收了view傳遞的介面引用來操作view
activity/fragment(view)調用presenter處理請求
presenter調用NetHelper(model)處理商務邏輯
虛線只返回到presenter
但presenter通過介面操作activity/fragment(view),它們的箭頭雙向通訊
presenter也可以通過eventbus或callback與activity/fragment(view)通訊
NetHelp網路通訊可以進化為使用OkHttp實現
MVVM構架
綜合說明:
viewModel通過dataBinding與xml布局檔案綁定,可直接操作未經處理資料
viewModel與activity/fragment(view)也是雙向通訊雙向箭頭
虛線代表結果返回,只返回到viewModel
viewModel肯定還是需要得到activity相關對象才可顯示供使用者查看
這裡可以是activity中的環境對象或activity本身
當然viewModel也可以通過eventbus或callback與activity通訊
NetHelp網路通訊可以進化為使用流行的Retrofit+RxJava實現
構架模型小結
1. model模型層,一般不僅僅包括商務邏輯模型,也包括實體模型.
商務邏輯一般是處理具體業務的層,例如此文中一切處理資料請求的DBHelper都當做此層
可能在後端不盡相同.後端業務模型包括Service中介層,DAO資料持久層
實體是專門承載資料,例如使用者實體User, 學生實體Student.
2. 在構架方面,此文只相對固定的模式,我覺得在具備基礎的條件下,完全可以無招勝有招
還是那句老話,按照項目選擇最合適構架
例如我個人覺得以mvp為標準,使presenter引用view介面下
xml布局也還是可根presenter綁定,那麼presenter即可直接操作未經處理資料,可以操作view方法
MVC、MVP、MVVM模式對比總結(2)橫向構架模型