MVP設計模式在安卓編程中的應用

​大家好,這一期呢,我們來談一下MVP設計模式在安卓編程中的應用。


MVP設計模式在安卓編程中的應用



Mvp就是model view presenter。

它來源於經典的mvc設計模式。Mvc設計模式可以說是最被廣泛使用的設計模式之一了。

先說一下為什麼要使用mvp?

我們都知道在安卓編程中activity是既有ui又有數據訪問的一個實體機制。隨著程序規模的不斷增加,我們需要保持程序的可擴展性和可維護性,因此我們需要對程序的整體架構進行分層。

舉個實際的例子。

你說我們在activity中對數據的獲取方式是通過訪問數據庫獲取的。也許過了一年的時候,我們想用webservice來獲取數據了。如果沒有數據層的分層,那意味著我們要把原來的代碼都要重寫一遍。

如果你有一層專門獲取數據的,那隻需要重寫這一層就可以了。

Mvp的作用就是使得視圖跟數據訪問分開。

就意味著我們要把大部分的數據邏輯和控制操作放到activity之外,我們把我們的程序分成至少三層。分成三層的另一個好處就是我們可以分別的進行測試。

那麼如何來應用mvp呢?

首先說一下, 就是view和presenter這兩層,有時候要畫一個很清晰的界限非常難。比如你對一個進度條的更新,對action bar的更新應該放在哪裡?怎麼來做決定?這些都取決於你實際的操作,沒有一個非常嚴格的標準。

數據層交互層model, interactor。

這一層主要是用於像服務器端或者數據源端獲取數據。假設我們使用用戶名和密碼來登錄服務器獲取登錄信息。

如果信息登錄失敗就要用失敗的接口,如果成功則調用成功的接口。


MVP設計模式在安卓編程中的應用



視圖層view。

視圖層肯定是在一個activity裡面,它可以是一個單獨的fragment也可以幾個fragment, 當然可以直接使用activity。



定義的方法就是有一個視圖的接口。

定義好我們可能會用到的視圖邏輯。比如像這裡可以顯示進度,可以隱藏進度,可以顯示用戶名錯,可以顯示密碼錯,可以進入到主頁內容等等。


MVP設計模式在安卓編程中的應用



然後在我們的activity或者fragment裡面實現這個接口。


MVP設計模式在安卓編程中的應用



接下來就是展示層presenter。

展示層是連接view和數據交互層的橋樑。是activity這一層調用的唯一接口。會包含view接口對象和數據交互接口對象。

比如說在這裡,我們的登陸接口是通過展示層來調用的。

展示層作為activity的一個成員屬性, Activity可以調用它的方法。


MVP設計模式在安卓編程中的應用



使用mvp時候的注意事項。

因為presenter是獨立於視圖的,而視圖就是activity本身。當activity被關閉以後,presenter仍然試圖訪問這個activity的話,就會導致程序崩潰。另一個問題就是可能會造成內存洩漏。因為presenter操作是activity發起的,如果activity在關掉的時候沒有關閉presenter,內存洩漏就會發生。

保持聯絡,請關注本號。

下面列一下上例中實現的kotlin代碼,以饗讀者:




MVP設計模式在安卓編程中的應用




MVP設計模式在安卓編程中的應用




MVP設計模式在安卓編程中的應用



MVP設計模式在安卓編程中的應用



分享到:


相關文章: