MVP,全稱 Model-View-Presenter 。
MVP模式是MVC模式的改良。在上個世紀90年代,IBM旗下的子公司Taligent在用C/C++開發一個叫CommonPoint的圖形介面應用系統的時候提出來的。
在MVP模式裡通常包含4個要素:
(1) View :負責繪製UI元素、與使用者進行互動(在Android中體現為Activity);
(2) View interface :需要View實現的介面,View透過View interface與Presenter進行互動,降低耦合,方便進行單元測試;
(3) Model :負責儲存、檢索、操縱資料(有時也實現一個Model interface用來降低耦合);
(4) Presenter :作為View與Model互動的中間紐帶,處理與使用者互動的負責邏輯。
優點:
1、降低耦合度,實現model和view的分離,可以修改view而不影響m層。
2、模組職責劃分明確,層次清晰。
3、presenter可以複用。
4、利於進行單元測試。
5、view可以進行元件化。
缺點:
1、presenter中除了邏輯,還有大量的view ->model, model ->view的手動同步邏輯,使得presenter笨重,維護困難。
2、試圖和presenter互動過於頻繁。
3、presenter過多的渲染檢視,會讓他們聯絡更緊密。
4、額外的程式碼量和學習成本。
所以,如果是小專案工程,沒有必要使用mvp,如果為了以後更好的架構,建議學習之後,再重構。
MVP,全稱 Model-View-Presenter 。
MVP模式是MVC模式的改良。在上個世紀90年代,IBM旗下的子公司Taligent在用C/C++開發一個叫CommonPoint的圖形介面應用系統的時候提出來的。
在MVP模式裡通常包含4個要素:
(1) View :負責繪製UI元素、與使用者進行互動(在Android中體現為Activity);
(2) View interface :需要View實現的介面,View透過View interface與Presenter進行互動,降低耦合,方便進行單元測試;
(3) Model :負責儲存、檢索、操縱資料(有時也實現一個Model interface用來降低耦合);
(4) Presenter :作為View與Model互動的中間紐帶,處理與使用者互動的負責邏輯。
優點:
1、降低耦合度,實現model和view的分離,可以修改view而不影響m層。
2、模組職責劃分明確,層次清晰。
3、presenter可以複用。
4、利於進行單元測試。
5、view可以進行元件化。
缺點:
1、presenter中除了邏輯,還有大量的view ->model, model ->view的手動同步邏輯,使得presenter笨重,維護困難。
2、試圖和presenter互動過於頻繁。
3、presenter過多的渲染檢視,會讓他們聯絡更緊密。
4、額外的程式碼量和學習成本。
所以,如果是小專案工程,沒有必要使用mvp,如果為了以後更好的架構,建議學習之後,再重構。