MVVM與MVC模式的比較

lakey0126發表於2018-09-03

菜鳥學習小筆記:

MVC :

先說一下作為一個開發人員來說,眾所周知的一個設計模式:MVC,

全稱為:Model-View-Controller.

主要目的:分離檢視(View)和模型(Model).

想必我們用著已經非常習慣,但是他有存在一些問題,這是筆者想通過此文告訴大家的:

1.模型的程式碼少

2.控制器的程式碼卻是越寫越多

3.由於寫的程式碼較多,故不好進行效能測試


MVVM :

全稱:Model-View-ViewModel ,MVVM 模式和 MVC 模式一樣,主要目的也是分離檢視(View)和模型(Model)


概念:

1.在MVVM中,view與viewController正式聯絡在一起,我們可以把他們視為一個元件

2.在MVVM架構中,view與viewController均不能直接引用model,而是通過引用viewModel來間接引用model

3.很多人會問,viewModel是一個什麼樣的架構呢?裡面應該放些什麼樣的東西呢?我們可以在viewModel中放置使用者輸入邏輯,檢視顯示邏輯及傳送網路請求和其他一些程式碼


那麼作為一種新型的架構模式,在使用時應該有哪些地方值得我們注意呢?

1.view 可以引用viewModel,但反過來卻是不行

2.viewModel 可以引用model,但是反過來也不行

3.如果我們違背了上述規則,那麼我們將會無法正常使用MVVM


MVVM自推出以後,便得到了大多數開發人員的認可,那麼MVVC這種設計模式有什麼優點呢?

1.低耦合:view/viewController可以獨立於Model而進行變化和修改,與此同時,一個viewModel可以繫結到不同的view/ViewController上

2.可重用性:可以把一些檢視邏輯放在一個ViewModel裡面,讓很多view/ViewController進行重用

3.獨立開發:通過MVVM,開發人員可以專注於邏輯開發在viewModel裡面,而設計人員也可以專注於頁面設計,並且使用ExpressionBlend可以更加容易設計頁面和生成XAML(Extensible Application Markup Language)程式碼.

4.可測試:通常來說,要進行,介面測試比較困難,而MVVM可以對viewModel進行測試.

通俗總結:

https://upload-images.jianshu.io/upload_images/844323-b4dc59d9aab83a54.png

view和view controller擁有view model,view model擁有model,相比較MVC的區別在於view和view controller是通過view model來間接運算元據的。這樣做的意義在於,對於一些比較複雜的操作邏輯,可以寫到view model裡面,從而簡化view和view controller,view和view controller只幹展示資料和接受互動事件就好了;反過來model的update,驅動view model的update,然後再驅動view和view controller變化,這個中間的加工邏輯也可以寫在view model中。
當然對於一些比較簡單的應用介面,使用MVC就綽綽有餘了,並不需要用MVVM,用哪種
還要看實際情況和個人喜好吧。
  • MVC 是後端的分層開發概念;

  • MVVM是前端檢視層的概念,主要關注於 檢視層分離,也就是說:MVVM把前端的檢視層,分為了 三部分 Model, View , VM ViewModel

  • 為什麼有了MVC還要有MVVM

MVVM與MVC模式的比較

圖片可放大

相關文章