沒有后端基礎如何理解MVCMVP和MVVM?
MVC、MVP、MVVM這些模式是為了解決開發過程中的實際問題而提出來的,目前作為主流的幾種架構模式而被廣泛使用。
MVC、MVP、MVVM 三者特點
MVC(同步通信為主) :Model、View、ControllerMVP(異步通信為主) :Model、View、PresenterMVVM(異步通信為主):Model、View、ViewModel什么是MVC 模式?
MVC 模式代表 Model-View-Controller(模型-視圖-控制器) 模式。這種模式用于應用程序的分層開發。Model(模型) - 模型代表一個存取數據的對象或 JAVA POJO。它也可以帶有邏輯,在數據變化時更新控制器。View(視圖) - 視圖代表模型包含的數據的可視化。Controller(控制器) - 控制器作用于模型和視圖上。它控制數據流向模型對象,并在數據變化時更新視圖。它使視圖與模型分離開。MVC是比較直觀的架構模式,用戶操作->View(負責接收用戶的輸入操作)->Controller(業務邏輯處理)->Model(數據持久化)->View(將結果反饋給View)。什么是MVP模式?
MVP 全稱是Model - View - Presenter ,是模型(model)-視圖(view)-呈現器(presenter)的縮寫。MVP是把MVC中的Controller換成了Presenter(呈現),目的就是為了完全切斷View跟Model之間的聯系,由Presenter充當橋梁,做到View-Model之間通信的完全隔離。Model:業務邏輯和數據處理(數據庫存儲操作,網絡數據請求,復雜算法,耗時操作)。View : 對應于Activity,負責View的繪制以及與用戶交互。Presenter:負責完成View于Model間的交互 (有一點還需要注意,presenter是雙向綁定的關系,因此,在設計的時候就要注意接口和抽象的使用,盡可能的降低代碼的耦合度,這也是mvp的宗旨)。什么是MVVM模式?
MVVM(Model-View-ViewModel)是一種軟件設計模式,由微軟WPF(用于替代WinForm,以前就是用這個技術開發桌面應用程序的)和Silverlight(類似于Java Applet,簡單點說就是在瀏覽器上運行WPF)的架構師Ken Cooper和Ted Peters開發,是一種簡化用戶界面的事件驅動編程方式。由John Gossman(同樣也是WPF和Sliverlight的架構師)與2005年在他的博客上發表。MVVM源自于經典的MVC(Model-View-Controller)模式。MVVM的核心是ViewModel層,負責轉換Model中的數據對象來讓數據變得更容易管理和使用。如果說MVP是對MVC的進一步改進,那么MVVM則是思想的完全變革。它是將“數據模型數據雙向綁定”的思想作為核心,因此在View和Model之間沒有聯系,通過ViewModel進行交互,而且Model和ViewModel之間的交互是雙向的,因此視圖的數據的變化會同時修改數據源,而數據源數據的變化也會立即反應到View上。MVVM已經相當成熟了,主要運用但不僅僅在網絡應用程序開發中。當下流行的MVVM框架有Vue.js,Anfular JS為什么要使用MVVM?
MVVM模式和MVC模式一樣,主要目的是分離視圖(View)和模型(Model),有幾大好處低耦合:視圖(View)可以獨立于Model變化和修改,一個ViewModel可以綁定到不同的View上,當View變化的時候Model可以不變, 當Model變化的時候View也可以不變。 可復用:你可以把一些視圖邏輯放在一個ViewModel里面,讓很多View重用這段視圖邏輯。 獨立開發:開發人員可以專注于業務邏輯和數據的開發(ViewMode),設計人員可以專注于頁面設計。 可測試:界面素來是比較難以測試的,而現在測試可以針對ViewModel來寫上一篇focus的用法是什么