MVC
1.定義:MVC全名是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫,一種軟件設計典范,用一種業務邏輯、數據、界面顯示分離的方法組織代碼,將業務邏輯聚集到一個部件里面,在改進和個性化定制界面及用戶交互的同時,不需要重新編寫業務邏輯。MVC被獨特的發展起來用于映射傳統的輸入、處理和輸出功能在一個邏輯的圖形化用戶界面的結構中。
關系:
View:(視圖層),對應于xml布局文件
控制層(Controller)
Android的控制層由Activity來承擔,Activity作為初始化話頁面和展示數據的操作,這里他負責視圖的顯示又要加入控制邏輯,承擔的功能過多會導致Activity臃腫
模型層(Model):我們針對業務模型,獎勵的數據結構和相關的類,主要負責數據的操作,如網絡請求,數據庫操作,IO操作等
MVP
由MVC演變而來,由于MVC中View層和Model層可以直接交互,代碼存在耦合,Activity當了controller和View的角色,在MVC模式下隨著界面及其邏輯的復雜度不斷提升,Activity類的職責不斷增加,以致變得龐大臃腫
視圖層:(View)
負責繪制UI 元素,與用戶進行交互,對應于xml、Activity、Fragement
控制層:(Presenter)
Presenter是整個MVP 體系的控制中心,作為View和Model的中間樞紐,處理View與Model間的交互和業務邏輯
模型層:Model
負責存儲、檢索、操縱數據
他們的關系是:View層響應用戶請求 ->通過View層里面P的引用調用 P層, ->p層處理具體的業務邏輯通過調用M層引用進行數據處理->M層進行業務處理完成后調用P層傳遞過來的回調 ->P層在再回調V層的引用進行UI更新
MVVM
MVVM模式(Model--View--ViewModel模式),和MVP模式相比,MVVM 模式用ViewModel替換了Presenter ,其他層基本上與 MVP 模式一致,ViewModel可以理解成是View的數據模型和Presenter的合體。
MVVM采用雙向綁定,View的變動自動反應到ViewModel,V與VM通過Databingding實現雙向綁定,解決了MVP中P與V關系緊密的問題
視圖層:(View)
對應于Activity和xml,負責View的繪制及用戶交互
控制層:(ViewModel)創建關聯,將Model和view綁定起來,之后model的更改,通過ViewModel反饋給View,從而刷新界面
模型層(Model):負責數據實現和邏輯處理,
View層的Activity通過DataBingding生成Binding實例,把這個實例傳遞給ViewModel,ViewModel層通過把自身與Binding實例綁定,從而實現View中Layout與ViewModel的雙向綁定