MVC / MVP / MVVM

MVC

MVC全名是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫,一種軟件設計典範,用一種業務邏輯、數據、界面顯示分離的方法組織代碼,將業務邏輯彙集到一個部件裏面,在改進和個性化定製界面及用戶交互的同時,不須要從新編寫業務邏輯。MVC被獨特的發展起來用於映射傳統的輸入、處理和輸出功能在一個邏輯的圖形化用戶界面的結構中。架構

圖片描述

  • View 接受用戶交互請求 View 將請求轉交給Controller Controller 操做Model進行數據更新數據更新以後,Model通知View更新 數據變化 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數據
  • Model與View徹底分離,修改互不影響 更高效地使用,由於全部的邏輯交互都 發生在一個地方—Presenter內部一個Preseter可用於多個View,而不須要改 變Presenter的邏輯(由於View的變化總 是比Model的變化頻繁)。更便於測試。把邏輯放在Presenter中,就能夠脫離用 戶接口來測試邏輯(單元測試)

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能夠綁定到不一樣的」View」上,當View變化的時候Model能夠不變,當Model變化時候View也能夠不變。 
  • 可重用性。你能夠把一些視圖邏輯放在一個ViewModel裏面,讓不少view重用這段視圖邏輯。 
  • 獨立開發。開發人員能夠專一於業務邏輯和數據的開發(ViewModel),設計人員能夠專一於頁面設計,生成xml代碼。
  • 可測試。界面素來是比較難於測試的,而如今測試能夠針對ViewModel來寫。
相關文章
相關標籤/搜索