MVP不好嗎?
- V:界面相關(界面的展示,用戶操作的觸發(fā))
- M:數(shù)據(jù)相關(基本數(shù)據(jù)的定義村生,數(shù)據(jù)的處理:增刪該查)
- P:中介(是在M和V之間的中間商。拿到M給的數(shù)據(jù)妻熊,再小小的處理下夸浅,最后交給V)
從以上可以看出,mvp的邏輯還是很清楚的嘛扔役!有哪里可以做的更好呢帆喇?
從P層扮演的中間商下手:
比如這樣的一個情況:
M層:從網(wǎng)絡獲取到了一堆新聞數(shù)據(jù)
P層:將M層獲取到的數(shù)據(jù)過濾一下(過濾掉不健康的信息)
V層:顯示P層過濾后的信息
我們可以將P層的將M層獲取到的數(shù)據(jù)過濾一下(過濾掉不健康的信息)
這個邏輯抽取出來,做成一個單獨的模塊亿胸!相當于這個商業(yè)邏輯獨立了坯钦,針對這個邏輯,我們可以肆意的虐待他侈玄,比如測試(因為是個單獨的模塊了婉刀,所有非常方便測試)!
將商業(yè)邏輯抽象
抽象:
抽象說的太玄乎了序仙,其實就是考慮將商業(yè)邏輯封裝成類突颊!
比如對人的相關信息可以封裝成Person
,在clean架構里潘悼,我們將商業(yè)邏輯封裝成UseCase
所謂商業(yè)邏輯其實就是:
針對你給的數(shù)據(jù)--->處理--->處理完成后的數(shù)據(jù)交出來
綜上:我們的UseCase
就是如下啦:
針對某個功能律秃,你對P的分解,可以寫出好幾個usecase啦:
限于篇幅治唤,針對具體的
UseCase
的實現(xiàn)棒动,我就不細說了,很簡單的宾添,你們細看船惨。這個例子的地址:
https://github.com/android10/Android-CleanArchitecture
其它
你現(xiàn)在有一堆商業(yè)邏輯啦,一般商業(yè)邏輯的處理在后臺執(zhí)行辞槐,而處理后的結果需要切換到主線程掷漱。(Ok,我們有RxJava榄檬,很方便的來完成這個)
現(xiàn)在卜范,我們用UseCaseHandler
來解決這個問題:(大同小易,可看可不看)
代碼我就補貼了鹿榜,代碼地址在:
https://github.com/android10/Android-CleanArchitecture