MVVM、MVC及MVP

1.MVVM

        MVC是Mode-View-ViewModel,模型指的是後端傳遞的數據,視圖是所看到的頁頁面、視圖模型是MVVM模式核心,它是連接View和Model的核心,它是連接View和Model的橋樑,它有兩個方向:一是將模型轉化成視圖,即將後端傳遞的數據轉化成所看到了頁面,實現的方式是:數據綁定;二是將視圖轉化爲模型,即將所看到的頁面轉化成後端的數據。在MVVM的框架下視圖和模型是不能直接通信的,它們通過ViewModel來通信,ViewModel通常要實現一個observer觀察者,當數據發生變化ViewModel能夠監聽到數據的這種變化,然後通知到對應的視圖做自動更新,而當用戶操作視圖,VIewModel也能監聽到視圖的變化,然後通知數據做改動,這實際上就實現了數據的雙向綁定,並且MVVM中的View和ViewModel可以相互通信,如下:

在這裏插入圖片描述

2. MVC

        MVC是Model-View-Conroller,即模型-視圖-控制器,M和V指的意思和MVVM中的M和V的意思一樣,C即Controller指的是頁面業務邏輯,使用MVC的目的就是將M和V的代碼分離,MVC是單向通信,也就是View跟Model,必須通過Controller承上啓下。MVC和MVVM的區別並不是VM完全取代C,ViewModel存在的目的在於抽離Controller中展示的業務邏輯,而不是替代Controller,其它視圖操作業務等還是應該在Controller中實現,也就是說MVVM實現的是業務邏輯組件的重用。

3.MVP

        MVP的全稱爲Model-View-Presenter,Model提供數據,View負責顯示,Controller/Presenter負責邏輯的處理。MVP與MVC有着一個重大的區別:在MVP中View並不直接使用Model,它們之間的通信是通過Presenter(MVC中的Controller)來進行的,所有的交互都發生在Presenter內部,而在MVC中View會直接從Model中讀取數據而不是通過Controller。
MVP模式下表示層的優勢體現在下面三個方面:

  1. View與Model完全隔離。
    得益於此,Model和View之間具有良好的鬆耦合設計,這意味着,如果Model或View中的一方發生變化,只要交互接口不變,另一方就沒必要對上述變化做出改變。這使得Model層的業務邏輯具有很好的靈活性和可重用性。
  2. Presenter與View的具體實現技術無關。
    也就是說,採用諸如Windows表單,WPF,Web表單等用戶界面構建技術中的任意一種來實現View層,都無需改變系統的其他部分。甚至爲了使B/S,C/S部署架構能夠被同時支持,應用程序可以用同一個Model層適配多種技術構建的View層。
  3. 可以進行View的模擬測試。
    過去,由於View和Model之間的緊耦合,在Model和View同時開發完成之前對其中一方進行測試是不可能的。出於同樣的原因,對View或Model進行單元測試很困難。現在,MVP模式解決了所有的問題。在MVP模式中,View和Model之間沒有直接依賴,開發者能夠藉助模擬對象注入測試兩者中的任一方。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章