如何理解android mvp模式中的interactor?

最近看了幾個mvp開源項目中的例子,發現每個presenter中都持有一個或多個的interactor,而每個interactor裡面就是調用了一下api介面.那為什麼不在presenter中直接調用api,還非要中間再倒一手?


Presenter起到的其實就是一個粘合劑的角色。

它調度了UI邏輯和數據邏輯,然而UI邏輯和數據邏輯的具體實現,Presenter是不用關心的,只需要處理好如何調度,和狀態處理即可。

理解這個之前,你需要理解Model 和 ViewModel,一個Model也就是我們平常說的JavaBean,例如一個User類,它有自己的基本屬性。姓名,年齡,用戶名,密碼等等。

而ViewModel代表的是視圖的Model,例如一個登陸視圖,它的ViewModel包含用戶名,密碼。

所以Model是不能直接被視圖使用的,我們需要轉換成ViewModel的形式,然後綁定到視圖上。

你可能會說,我也可以直接綁定Model的屬性到View上,但是這樣View和Model就不是相互獨立的了,也就違背了我們使用MVP、MVVM的初衷。

Interactor的作用實際上就是獲取Model(從本地資料庫,或者是伺服器),轉換成ViewModel,回調通知把ViewModel傳遞給Presenter。

Presenter實現了Interactor的回調介面,可以接收到ViewModel的實例,此時它在回調函數裡面只需要將接收到的ViewModel綁定的View上面即可。

可以看到,在這個過程中Presenter並沒有觸及到具體的實現,只是把View 和 ViewModel進行了綁定而已。

當然你也可以把數據邏輯寫在Presenter,但是Interactor就不存在了,其實Interactor也是可以重用的。


推薦閱讀:

為什麼 Android 中安裝在 SD 卡上的應用無法添加 Widget?
Android 5.0 如何實現將布局的內容延伸到狀態欄?
最近Android studio出了1.0版,但是SDK一直無法下載,請問大家是怎麼解決的?
如何成為 Android 開發高手?
sdk manager更新失敗,顯示Download interrupted: read timed out,應該如何解決?

TAG:Android開發 | Android |