MVC和MVVM,MVP
MVC
MVC全名是Model View Controller,是模型(model)-檢視(view)-控制器(controller)的縮寫,一種軟體設計典範,用一種業務邏輯、資料、介面顯示分離的方法組織程式碼,將業務邏輯聚集到一個部件裡面,在改進和個性化定製介面及使用者互動的同時,不需要重新編寫業務邏輯。MVC被獨特的發展起來用於對映傳統的輸入、處理和輸出功能在一個邏輯的圖形化使用者介面的結構中。
資料關係
View 接受使用者互動請求
View 將請求轉交給Controller
Controller 操作Model進行資料更新
資料更新之後,Model通知View更新資料變化
View 更新變化資料
方式
所有方式都是單向通訊
結構實現
View :使用 Composite模式 View和Controller:使用 Strategy模式 Model和 View:使用 Observer模式同步資訊
使用
MVC中的View是可以直接訪問Model的!從而,View裡會包含Model資訊,不可避免的還要包括一些業務邏輯。在MVC模型裡,更關注的Model的不變,而同時有多個對Model的不同顯示,及View。所以,在MVC模型裡,Model不依賴於View,但是 View是依賴於Model的。不僅如此,因為有一些業務邏輯在View裡實現了,導致要更改View也是比較困難的,至少那些業務邏輯是無法重用的。
MVP
mvp的全稱為Model-View-Presenter,Model提供資料,View負責顯示,Controller/Presenter負責邏輯的處理。MVP與MVC有著一個重大的區別:在MVP中View並不直接使用Model,它們之間的通訊是通過Presenter (MVC中的Controller)來進行的,所有的互動都發生在Presenter內部,而在MVC中View會直接從Model中讀取資料而不是通過 Controller。
資料關係
View 接收使用者互動請求
View 將請求轉交給 Presenter
Presenter 操作Model進行資料更新
Model 通知Presenter資料發生變化
Presenter 更新View資料
MVP的優勢
Model與View完全分離,修改互不影響
更高效地使用,因為所有的邏輯互動都發生在一個地方—Presenter內部
一個Preseter可用於多個View,而不需要改變Presenter的邏輯(因為View的變化總是比Model的變化頻繁)。
更便於測試。把邏輯放在Presenter中,就可以脫離使用者介面來測試邏輯(單元測試)
方式
各部分之間都是雙向通訊
結構實現
View :使用 Composite模式 View和Presenter:使用 Mediator模式 Model和Presenter:使用 Command模式同步資訊
MVC和MVP區別
MVP與MVC最大的一個區別就是:Model與View層之間倒底該不該通訊(甚至雙向通訊)
MVC和MVP關係
MVP:是MVC模式的變種。專案開發中,UI是容易變化的,且是多樣的,一樣的資料會有N種顯示方式;業務邏輯也是比較容易變化的。為了使得應用具有較大的彈性,我們期望將UI、邏輯(UI的邏輯和業務邏輯)和資料隔離開來,而MVP是一個很好的選擇。Presenter代替了Controller,它比Controller擔當更多的任務,也更加複雜。Presenter處理事件,執行相應的邏輯,這些邏輯對映到Model操作Model。那些處理UI如何工作的程式碼基本上都位於Presenter。MVC中的Model和View使用Observer模式進行溝通;MPV中的Presenter和View則使用Mediator模式進行通訊;Presenter操作Model則使用Command模式來進行。基本設計和MVC相同:Model儲存資料,View對Model的表現,Presenter協調兩者之間的通訊。在 MVP 中 View 接收到事件,然後會將它們傳遞到 Presenter, 如何具體處理這些事件,將由Presenter來完成。如果要實現的UI比較複雜,而且相關的顯示邏輯還跟Model有關係,就可以在View和 Presenter之間放置一個Adapter。由這個 Adapter來訪問Model和View,避免兩者之間的關聯。而同時,因為Adapter實現了View的介面,從而可以保證與Presenter之 間介面的不變。這樣就可以保證View和Presenter之間介面的簡潔,又不失去UI的靈活性。
使用
MVP的實現會根據View的實現而有一些不同,一部分傾向於在View中放置簡單的邏輯,在Presenter放置複雜的邏輯;另一部分傾向於在presenter中放置全部的邏輯。這兩種分別被稱為:Passive View和Superivising Controller。
MVVM
MVVM是Model-View-ViewModel的簡寫。微軟的WPF帶來了新的技術體驗,如Silverlight、音訊、視訊、3D、動畫……,這導致了軟體UI層更加細節化、可定製化。同時,在技術層面,WPF也帶來了 諸如Binding、Dependency Property、Routed Events、Command、DataTemplate、ControlTemplate等新特性。MVVM(Model-View-ViewModel)框架的由來便是MVP(Model-View-Presenter)模式與WPF結合的應用方式時發展演變過來的一種新型架構框架。它立足於原有MVP框架並且把WPF的新特性糅合進去,以應對客戶日益複雜的需求變化。
資料關係
View 接收使用者互動請求
View 將請求轉交給ViewModel
ViewModel 操作Model資料更新
Model 更新完資料,通知ViewModel資料發生變化
ViewModel 更新View資料
方式
雙向繫結。View/Model的變動,自動反映在 ViewModel,反之亦然。
使用
可以相容你當下使用的 MVC/MVP 框架。
增加你的應用的可測試性。
配合一個繫結機制效果最好。
MVVM優點
MVVM模式和MVC模式一樣,主要目的是分離檢視(View)和模型(Model),有幾大優點: 1. 低耦合。View可以獨立於Model變化和修改,一個ViewModel可以繫結到不同的”View”上,當View變化的時候Model可以不變,當Model變化的時候View也可以不變。 2. 可重用性。你可以把一些檢視邏輯放在一個ViewModel裡面,讓很多view重用這段檢視邏輯。 3. 獨立開發。開發人員可以專注於業務邏輯和資料的開發(ViewModel),設計人員可以專注於頁面設計,生成xml程式碼。 4. 可測試。介面素來是比較難於測試的,而現在測試可以針對ViewModel來寫。
轉載,請說明來源:http://blog.csdn.net/hudan2714/article/details/50990359
相關文章
- MVC,MVP,MVVMMVCMVPMVVM
- MVC——MVP——MVVMMVCMVPMVVM
- MVC、MVP、MVVMMVCMVPMVVM
- MVC、MVP和MVVM的區別MVCMVPMVVM
- MVC,MVP 和 MVVM 的圖示MVCMVPMVVM
- MVC MVP 和 MVVM 的圖示MVCMVPMVVM
- 教你認清MVC,MVP和MVVMMVCMVPMVVM
- MVC,MVP 和 MVVM 模式如何選擇?MVCMVPMVVM模式
- MVC、MVP和MVVM以及MVA比較MVCMVPMVVM
- 淺談框架模式 MVC、MVP 和 MVVM框架模式MVCMVPMVVM
- 雜談: MVC/MVP/MVVMMVCMVPMVVM
- MVC,MVP和MVVM之間的區別MVCMVPMVVM
- 談談對MVC、MVP和MVVM的理解?MVCMVPMVVM
- android MVC && MVP && MVVM分析和對比AndroidMVCMVPMVVM
- 淺談MVC/MVP/MVVM模式(概述)MVCMVPMVVM模式
- 深入分析MVC、MVP、MVVM、VIPERMVCMVPMVVM
- MVC vs. MVP vs. MVVMMVCMVPMVVM
- 理解並運用MVC,MVP,MVVMMVCMVPMVVM
- [譯]iOS架構模式——解密MVC、MVP、MVVM和VIPERiOS架構模式解密MVCMVPMVVM
- 不要再問我MVC、MVP、MVVM了MVCMVPMVVM
- Android 架構設計:MVC、MVP、MVVM和元件化Android架構MVCMVPMVVM元件化
- 淺談Android中的mvc,mvp,mvvmAndroidMVCMVPMVVM
- MVC、MVP、MVVM,我到底該怎麼選?MVCMVPMVVM
- 轉享:表現層架構模式比較:MVP(SC),MVP(PV),PM,MVVM 和 MVC架構模式MVPMVVMMVC
- iOS MVC、MVVM、MVP架構模式淺淺析iOSMVCMVVMMVP架構模式
- iOS架構淺談從 MVC、MVP 到 MVVMiOS架構MVCMVPMVVM
- 架構設計的歷史·MVC·MVP·MVVM架構MVCMVPMVVM
- 選擇恐懼症的福音!教你認清MVC,MVP和MVVMMVCMVPMVVM
- 淺析前端開發中的 MVC/MVP/MVVM 模式前端MVCMVPMVVM模式
- iOS架構設計:揭祕MVC, MVP, MVVM以及VIPERiOS架構MVCMVPMVVM
- iOS 架構模式–解密 MVC,MVP,MVVM以及VIPER架構iOS架構模式解密MVCMVPMVVM
- 對MVP和MVVM的一點看法MVPMVVM
- iOS底層原理 MVC、MVP、MVVM、分層設計淺談 — (13)iOSMVCMVPMVVM
- MVC、MVP、MVVM,談談我對Android應用架構的理解MVCMVPMVVMAndroid應用架構
- MVC模式和MVP模式的區別MVC模式MVP
- MVC、MVCS、MVVM、MVP、VIPER等這麼多架構模式哪一個好呢?MVCMVVMMVP架構模式
- 聊聊MVC和模組化以及MVVM和元件化MVCMVVM元件化
- 前端面試查漏補缺--(十一) 前端軟體架構模式MVC/MVP/MVVM前端面試架構模式MVCMVPMVVM