框架模式之 MVP

簡介

MVP 模式是 MVC 模式的一個演化版本,MVP 全稱 Model-View-Presenter。目前 MVP 在 Android 應(yīng)用開發(fā)中越來越重要了。

設(shè)計圖

mvp.png

優(yōu)點

  • 模型與視圖完全分離;
  • 可以更高效地使用模型,因為所有的交互都發(fā)生在一個地方—— Presenter 內(nèi)部;
  • 一個 Presener 可以用于多個視圖(View),而不需要改變 Presenter 的邏輯。視圖(View)的變化比模型(Model)的變化更頻繁的多 ,所以這樣超級方便;
  • View 可以進行組件化。在 MVP 當(dāng)中,View 不依賴 Model。這樣就可以讓 View 從特定的業(yè)務(wù)場景中脫離出來,可以說 View 可以做到對業(yè)務(wù)邏輯完全無知。它只需要提供一系列接口提供給上層操作。這樣就可以做高度可復(fù)用的 View 組件。
  • 更容易單元測試

缺點

  • 由于對視圖的渲染放在了 Presenter 中,所以視圖 View 和 Presenter 的交互會過于頻繁。特別是需要修改視圖的時候,Presenter也需要跟著修改,很麻煩。
  • Presenter 中除了業(yè)務(wù)邏輯以外,還有大量的 View->Model,Model->View的手動同步邏輯,造成 Presenter 比較笨重,維護起來會比較困難。
  • 其實總的來說就是結(jié)構(gòu)很清晰,業(yè)務(wù)邏輯也很明白,耦合低,但是就是自己寫的麻煩,Presenter 不好維護,工作量太大,太笨重,有點像 MVC 中的 Activity 了,職責(zé)太多了。

實例

androidmvp

小結(jié)

通過引入接口 BaseView,讓相應(yīng)的視圖組件如 Activity,F(xiàn)ragment 去實現(xiàn)BaseView,實現(xiàn)了視圖層的獨立,通過中間層 Preseter 實現(xiàn)了 Model 和 View 的完全解耦。MVP 徹底解決了 MVC 中 View 和 Controller 傻傻分不清楚的問題,但是隨著業(yè)務(wù)邏輯的增加,一個頁面可能會非常復(fù)雜,UI 的改變是非常多,會有非常多的 case,這樣就會造成 View 的接口會很龐大。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容