一、簡介
MVP (Model-View-Presenter),MVP 是從經典的模式MVC演變而來,它們的基本思想有相通的地方:Controller/Presenter負責邏輯的處理,Model提供數據,View負責顯示。
二、運用MVP
Presenter
相當於model和view的協調者,作爲View和Model的溝通的橋樑,它從Model層檢索數據後返回給View層,將View與Model分離開來,使得View和Model之間沒有耦合。
Model
主要提供數據的存取功能。Presenter需要通過Model層來存儲、獲取數據。
View
負責界面數據的展示,與用戶進行交互。
在MVP裏,Presenter完全把Model和View進行了分離,主要的程序邏輯在Presenter裏實現。而且,Presenter與具體的View是沒有直接關聯的,而是通過定義好的接口進行交互,從而使得在變更View時候可以保持Presenter的不變。 View只應該有簡單的Set/Get的方法,用戶輸入和設置界面顯示的內容,除此就不應該有更多的內容,絕不容許直接訪問Model,這就是與MVC很大的不同之處。
三、MVP優點和缺點
優點
降低耦合度,實現了Model和View真正的完全分離。
模塊職責劃分明顯,層次清晰。
Presenter可以複用,一個Presenter可以用於多個View,而不需要更改Presenter的邏輯(當然是在View的改動不影響業務邏輯的前提下)。
如果我們把邏輯放在Presenter中,那麼我們就可以脫離用戶接口來測試這些邏輯(單元測試)。
缺點
由於對視圖的渲染放在了Presenter中,所以視圖和Presenter的交互會過於頻繁。還有一點需要明白,如果Presenter過多地渲染了視圖,往往會使得它與特定的視圖的聯繫過於緊密。一旦視圖需要變更,那麼Presenter也需要變更了