1. 程式人生 > >Android MVP模式簡介

Android MVP模式簡介

MVP模式現在已經被應用很多了。那麼什麼才是MVP呢?這篇文章就介紹了MVP模式的相關內容以及本人基於自己的理解寫了一個小Demo http://github.com/Ti2Yuan/androidMvpDemo,如果有什麼不對的地方也請讀者能指出,謝謝!共同交流嘛!

什麼是MVP模式?

Android MVP(Model View Presenter)模式是著名的MVC(Model View Controller)模式的衍生物,通常包含4個要素:
(1)View:負責繪製UI元素、與使用者進行互動(在Android中體現為Activity);
(2)View interface:需要View實現的介面,View通過View interface與Presenter進行互動,降低耦合,方便進行單元測試;
(3)Model:負責儲存、檢索、操縱資料(有時也實現一個Model interface用來降低耦合);
(4)Presenter:作為View與Model互動的中間紐帶,處理與使用者互動的負責邏輯。

MVP模式就是為了更好細分檢視(View)與模型(Model)的功能,讓View專注於處理視覺化介面,與使用者互動,同時讓Model也只專注於處理資料的處理。它與MVC模式的不同在於:

  1. MVP模式中 View不直接與Model互動,而是通過Presenter來與Model間接互動。但是在MVC模式中View可以和Model直接互動。
  2. MVP模式中通常VIew與Presenter是一對一的關係,而MVC模式中Controller可以被多個View共享。
  3. MVP模式中Presenter與View的互動是通過介面來進行的,更有利於新增單元測試。

那為什麼要使用MVP模式呢?

在Android開發中,我們經常會遇到一種情況,就是activity裡面集中了UI介面的互動與資料顯示,還有相關的資料處理機制,顯得相當繁雜,可讀性非常差。這個問題在當專案越來越大的時候越發突出,令人煩惱。那麼為了開發出一個擴充套件性、穩定性良好的APP,我們就必須定義分離層。而MVP模式使得View和我們的資料來源獨立。我們將應用分為三個層次,每個層次都可以獨立測試。

模式的優點:
(1)降低耦合度
(2)模組職責劃分明顯
(3)利於測試驅動開發
(4)程式碼複用
(5)隱藏資料
(6)程式碼靈活性

Presenter層:負責連線View和Model兩個層次,從Model檢索資料然後返回到View層用於顯示。但也可以基於使用者與介面的互動決定改如何顯示。

View層:通常可以使一個Activity或者Fragment,包含Presenter層的一個引用,每次使用者與View存在互動,View層就會呼叫Presenter的方法進行處理。

Model層:與Presenter層互動,儲存、檢索、操縱資料,也就是我們想要顯示在UI介面的資料提供者。

總結
在Android開發中,從邏輯上分離介面不是容易的,但是MVP模式卻使得,預防我們的Activity裡面程式碼成堆這個難題,變得簡單。在大專案中,這個模式顯得更加重要。否則,維護和擴充套件將會極其艱難。