MVP框架模式


一、基本概念

MVP是Model-View-Presenter的簡稱,即模型-視圖-表現層的縮寫。MVP是由MVC模式進化而來的,MVP改進了MVC中的控制器過於臃腫的問題。
與MVC一樣,MVP將應用程序的數據處理、數據顯示和邏輯控制分開,用一種業務邏輯、數據顯示和界面相分離的方法組織代碼。

二、MVP與MVC的比較(以Android開發為例)




MVP與MVC相比,MVP減少了Activity的職責,簡化了Activity的代碼,將復雜的邏輯代碼提取到了Presenter中進行處理。Presenter的出現,將Activity視為View層,Presenter負責完成View層與Model層的交互。與之對應的好處就是:程序耦合度更低,更加方便地進行測試,程序可擴展性大大提高。
MVP從MVC演化而來,它們的基本思想有相通的地方。Controller與Presenter負責邏輯的處理,Model提供數據,View負責顯示數據。MVP作為一個新的模式,與MVC有一個重大的區別:在MVP中View並不直接使用Model,它們之間的通信是通過Presenter來進行的,所有的交互都發生在Presenter內部;而在MVC中View會直接從Model讀取數據。
MVP解決了MVC問題:
在MVP中,Presenter完全把View與Model進行分離,主要的程序邏輯在Presenter實現。而且,Presenter與具體的View是沒有直接關聯的,而是通過定義好的接口進行交互,從而使得在變更View層的時候可以保持Presenter不變。不僅如此,我們還可以編寫測試用的View,模擬用戶的操作,從而實現對Presenter的測試——而不需要使用自動化的測試工具。
MVP中的View層是很薄的一層,View只應該有簡單的set/get方法、用戶輸入和界面顯示的內容,除此之外不應該有更多的內容,絕不允許直接訪問Model——這就是MVP與MVC的很大不同之處。

 

三、MVP的工作原理和結構

 

 

 

1、模型(Model)

模型表示業務邏輯和實體模型,提供數據給Presenter。

 

 

2、視圖(View)

視圖是用戶看到並與之交互的界面。視圖向用戶顯示相關的數據,並能接受用戶的輸入數據,但它不進行任何實際的業務處理。

 

 

3、表現層(Presenter)

應用程序主要的程序邏輯在Presenter內實現,而且Presenter將Model和View完全分離,所有的交互都發生在Presenter內部,具體業務邏輯全部交由Presenter接口實現類中進行處理。

 

 

四、MVP的優點

1、模型與視圖完全分離,我們可以修改視圖而不影響模型。
2、可以更加高效地使用模型,因為所有的交互都發生在Presenter內部。
3、我們可以將一個視圖用於多個視圖,而不需要改變Presenter內部的邏輯。這個特性非常有用,因為視圖的變化總是比模型的變化要頻繁。
4、把程序邏輯放在Presenter中,我們就可以脫離用戶接口來測試這些邏輯了。(單元測試)

 

 

五、MVP的缺點

 

由於對View的操作放在了Presenter中,所以View和Presenter的交互會過於頻繁。如果Presenter過多地操作視圖,往往會使得它與特定的 View聯系過於緊密。一旦視圖需要改變,那么Presenter也需要改變。

 

MVP模式demo下載:http://download.csdn.net/download/qq_33721382/10164979

 

參考資料:

http://blog.csdn.net/dantestones/article/details/51445208

http://blog.csdn.net/lmj623565791/article/details/46596109

https://baike.baidu.com/item/MVP/3714550


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM