- Vue.js從入門到項目實踐(超值版)
- 聚慕課教育研發中心編著
- 983字
- 2022-07-29 14:27:27
1.3.2 MVP模式介紹

MVP的英文全稱為Model View Presenter,它是從經典的MVC模式演變而來的。它們的基本思想有相通的地方:Controller/Presenter負責邏輯的處理,Model提供數據,View負責顯示。MVP從MVC演變而來,通過表示器將視圖與模型巧妙地分開。在該模式中,視圖通常由表示器初始化,它負責呈現用戶界面(UI),并接收用戶所發出的命令,但不對用戶的輸入做任何邏輯處理,而僅僅是將用戶輸入轉發給表示器。通常每一個視圖對應一個表示器,但是也可能一個擁有較復雜業務邏輯的視圖會對應多個表示器,每個表示器完成該視圖的一部分業務處理工作,降低了單個表示器的復雜程度;一個表示器也能被多個有著相同業務需求的視圖復用,增加單個表示器的復用度。表示器包含大多數表示邏輯,用以處理視圖,與模型交互以獲取或更新數據等。模型描述了系統的處理邏輯,但對于表示器和視圖一無所知。
1.MVP模式的優點
MVP模式的優點體現在以下三個方面。
(1)View與Model完全隔離。Model和View之間具有良好解耦性的設計,這就意味著,如果Model或View中的一方發生變化,只要交互接口不發生變化,另一方就無須對上述變化做出相應的變化,這使得Model層的業務邏輯具有很好的靈活性和可重用性。
(2)Presenter與View的具體實現技術無關。也就是說,采用諸如Windows表單、WPF(Windows Presentation Foundation)框架、Web表單等用戶界面構建技術中的任意一種來實現View層,都無須改變系統的其他部分。甚至為了使B/S、C/S部署架構能夠被同時支持,應用程序可以用同一個Model層適配多種技術構建的View層。
(3)可以進行View的模擬測試。由于View和Model之間的緊耦合,在Model和View同時開發完成前對其中一方進行測試是不可能的。出于同樣的原因,對View或Model進行單元測試很困難。MVP模式解決了上述所有的問題。在MVP模式中,View和Model之間沒有直接依賴,開發者能夠借助模擬對象注入測試兩者中的任意一方。
2.MVP模式與MVC模式的區別
MVP模式示意圖如圖1-1所示。作為一種新的模式,MVP與MVC有著一個重大的區別:在MVP中View并不直接使用Model,它們之間的通信是通過Controller來進行的,所有的交互都發生在Controller內部;而在MVC中View會直接從Model中讀取數據,而不是通過Controller。在MVC中,View是可以直接訪問Model的。View中會包含Model信息,不可避免地還要包括一些業務邏輯。在MVC模式中,更關注Model的不變,而同時有多個對Model的不同顯示及View。所以在MVC模式中,Model不依賴于View,但View是依賴于Model的。不僅如此,因為有一些業務邏輯在View中實現,導致要更改View也是比較困難的,至少那些業務邏輯是無法重用的,代碼復用率低。

圖1-1 MVP模式
- 版面設計與制作
- 中文版Dreamweaver CS6/Flash CS6/Photoshop CS6網頁設計基礎培訓
- After Effects CS6從入門到精通
- jQuery+Bootstrap Web開發案例教程(在線實訓版)
- 網頁制作與網站建設寶典
- 網頁制作實用教程(第3版)
- 網頁設計與制作Dreamweaver CS6標準教程(第2版)
- 社交網站界面設計(原書第2版)
- CSS圖鑒
- 電子商務網頁設計(第二版)
- 動態網頁設計與制作(HTML5+CSS3+JavaScript)(第3版)
- 巧學巧用Dreamweaver CS6制作網頁
- Highcharts網頁圖表制作實例詳解 (Web開發典藏大系)
- Dreamweaver CC網頁設計從入門到精通(微課精編版)
- 建筑CAD繪圖技術(第2版)