MVC、MVP、MVVM模式對比總結(2)橫向構架模型

來源:互聯網
上載者:User

標籤:網路通訊   相對   說明   返回結果   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)橫向構架模型

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.