MVC、MVP 和 MVVM 框架模式的區別?

MVC

前端的 MVC 和後端類似,具有 View、Controller 和 Model。

Model:負責保存應用數據,與後端數據進行同步。

Controller:負責業務邏輯。

View:負責視圖展示,將 Model 中的數據可視化出來。

這樣的模型,在理論上是可行的。但往往在實際開發中,並不會這樣操作。因爲開發過程並不靈活。

例如,一個小小的事件操作,都必須經過這樣一個過程,那麼開發就不再便捷了。


MVP

既然有缺陷,就會有變革。在前端框架模式的演進中,似乎少了 MVP 這種模型,這是因爲 Angular 早早的將 MVVM 框架模式帶入了前端。MVP 模式雖然在前端開發中並不常見,但是在原生安卓開發中,開發者還是會考慮到它的。

MVP 和 MVC 很接近,P 指的是 Presenter,Presenter 可以理解爲一箇中間人,它負責着 View 和 Model 之間的數據流動,防止 View 和 Model 之間直接交流。我們可以看一下圖示:

我們可以看到,Presenter 負責和 View 進行雙向交互,還和 Model 進行雙向交互。

這種交互方式,相較於 MVC 來說少了一些靈活,因爲現在 View 和 Model 不能相互通信了。

好處是它分離了 View 和 Model。

缺點是應用逐漸變大之後,導致 Presenter 的體積增大,難以維護。


MVVM

ViewModel 通過實現一套數據響應式機制自動響應 Model 中數據變化,同時 ViewModel 會實現一套更新策略自動將數據變化轉換爲視圖更新,通過事件監聽響應 View 中用戶交互修改 Model 中的數據。

這樣在 ViewModel 中就減少了大量 DOM 操作代碼。

MVVM 在保持 View 和 Model 松耦合的同時,還減少了維護它們關係的代碼,使用戶專注於業務邏輯,兼顧開發效率和可維護性。


總結

  • 這三者都是框架模式,它們設計的目的都是爲了解決 Model 和 View 的耦合問題。
  • MVP 是 MVC 的進化版,Presenter 作爲中間層負責 View 和 Model 之間的通信,解決了兩者的耦合問題,但 P 層過於臃腫會導致維護問題。

  • MVVM 模式在前端領域有廣泛應用,它不僅解決了 View 和 Model 之間的耦合問題,還同時解決了維護兩者映射關係的大量繁雜代碼和 DOM 操縱代碼,在提高開發效率、可讀性同時還保持了優越的性能。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章