Android中MVC、MVP、MVVM具體解釋
前言
今天有時間就剛好有想寫關於這幾個名詞。對於我來說。事實上這麽多名詞、思想歸根究竟就是要依據項目實際、人員配置來做合理優化,既不能紙上談兵、又不能畏懼不前。那麽合理分階段架構和完好代碼才是關鍵,本篇文章將以兩個思路講述,第一先說介紹,然後再說優缺點,結合實際開發。
一、MVC介紹
MVC (Model-View-Controller):M是指邏輯模型,V是指視圖模型,C則是控制器。一個邏輯模型能夠對於多種視圖
模型,比方一批統計數據你能夠分別用柱狀圖、餅圖來表示。一種視圖模型也能夠對於多種邏輯模型。
使用MVC的
目的是將M和V的實現代碼分離。從而使同一個程序能夠使用不同的表現形式。而C存在的目的則是確保M和V的同步。
一旦M改變,V應該同步更新。
二、Android中MVC使用
1.視圖層(View):一般採用XML文件進行界面的描寫敘述,使用的時候能夠很方便的引入。當然。怎樣你對Android了解的比較的多了話,
就一定能夠想到在Android中也能夠使用JavaScript+HTML等的方式作為View層,當然這裏須要進行Java和JavaScript之間的通信。幸運的是,
Android提供了它們之間很方便的通信實現。 ? ??
?2.控制層(Controller):本層應該是跟業務最掛鉤的一層。是用戶能操作的入口,在android中僅僅有activity。ios中有Controller,
在這邊activity中要做的就是業務導向。詳細實現模塊功能能夠封裝到model層,長時間操作例如以下載、上傳、等都能夠放線程或者服務等。
?3.模型層(Model):對數據庫的操作、對網絡等的操作都應該在Model裏面處理,當然對業務計算等操作也是必須放在的該層的。
還有數據模型都能夠放在本層。
三、MVC長處
從用戶的角度出發,用戶能夠依據自己的需求。選擇自己合適的瀏覽數據的方式。
比方說,對於一篇在線文檔,
用戶能夠選擇以HTML網頁的方式閱讀,也能夠選擇以pdf的方式閱讀。從開發者的角度,MVC把應用程序的
邏輯層與界面是全然分開的。最大的長處是:界面設計人員能夠直接參與到界面開發,
在邏輯層上。而不是像曾經那樣,設計人員把全部的材料交給開發者,由開發者來實現界面。
在Eclipes工
具中開發Android採用了更加簡單的方法,設計人員在DroidDraw中設計界面。以XML方式保存。
在Eclipes中直接打開就能夠看到設計人員設計的界面。
四、MVP介紹
MVP作為MVC的演化版本號,那麽相似的MVP所相應的意義:M-Model-模型、V-View-視圖、P-Presenter-表示器。?
從MVC和MVP兩者結合來看,Controlller/Presenter在MVC/MVP中都起著邏輯控制處理的角色。起著控制各業務
流程的作用。
而 MVP與MVC最不同的一點是M與V是不直接關聯的也是就Model與View不存在直接關系,這兩者之
間間隔著的是Presenter層,其負責調控?View與Model之間的間接交互,MVP的結構圖例如以下所看到的,對於這個圖理解
就可以而不必限於當中的條條框框,畢竟在不同的場景下多少會有些出入的。在 Android中很重要的一點就是對UI的
操作基本上須要異步進行也就是在MainThread中才幹操作UI。所以對View與Model的切斷分離是合理的。此外
Presenter與View、Model的交互使用接口定義交互操作能夠進一步達到松耦合也能夠通過接口更加方便地進行
單元測試。
四、MVP長處缺點
1.長處:
Presenter這一層處理著程序各種邏輯的分發,收到View層UI上的反饋命令、定時命令、系統命令等指令後分發處理
邏輯交由Model層做詳細的業務操作。在這裏能夠看到本身activity要做的事情被抽離出來,降低activity與view的業務
耦合,這樣有利於維護、易開發,降低降低activity中代碼和業務抽離模塊化。
2.缺點
mvp架構會抽離一層、這一層是業務分發,假設項目越來越大、人越來越多。假設業務許多。而且易改動的話,抽
離的一層會變的易讀性降低。還有開發團隊假設不能堅持,要又一次架構。基本要又一次寫一遍,所以要謹慎謹慎。
五、MVVM介紹
MVVM首先是基於mvc演變而來的,講到這裏那麽MVVM代表啥裏。MVVM模式包括了三個部分:Model – 代表你的 基本業務邏輯。View – 顯示內容,ViewModel – 將前面兩者聯系在一起的對象。一個ViewModel接口提供了兩個東西:
動作和數據。動作改變Model的下層(click listener。監聽文字改變的listener等等),而數據則是Model的內容,代表 第三方庫:RoboBinding等,github:https://github.com/RoboBinding/AndroidMVVM.六、MVVM優缺點
1.長處ViewModel大致上就是MVP的Presenter和MVC的Controller了,而View和ViewModel間沒有了MVP的界面接口,而是直接
交互。用數據“綁定”的形式讓數據更新的事件不須要開發者手動去編寫特殊用例,而是自己主動地雙向同步。數據綁定你能夠
覺得是Observer模式或者是Publish/Subscribe模式,原理都是為了用一種統一的集中的方式實現頻繁須要被實現的數據更新
問題。比起MVP。MVVM不僅簡化了業務與界面的依賴關系,還優化了數據頻繁更新的解決方式,甚至能夠說提供了一種有
效的解決模式。
2.缺點MVVM是數據模型綁定視圖方式,降低代碼、降低了數據更新,但假設是負責業務邏輯或者是高頻發業務改動,對於代碼理
解會有所降低。而且要使用第三方架構。這個是我最不喜歡的一點。
Android中MVC、MVP、MVVM具體解釋