MVP設計模式

weixin_33907511發表於2016-11-02

參考資料

【譯】Android開發中的MVP架構


前言

讓我們思考一下為什麼在Android開發中如此迫切地需要一個清晰的軟體架構?

在Android開發中,如果你不考慮架構的話,Activity類往往會越來越大。這是因為,在Android中,允許View和其它執行緒共存於Activity內。其實最大的問題莫過於在Activity中同時存在業務邏輯和UI邏輯。這會增加測試和維護的成本。


什麼是MVP?

MVP代表Model,View和Presenter。

  • View層負責處理使用者事件和檢視部分的展示。在Android中,它可能是Activity或者Fragment類。
  • Model層負責訪問資料。資料可以是遠端的Server API,本地資料庫或者SharedPreference等。
  • Presenter層是連線(或適配)View和Model的橋樑。

下圖是基於MVP架構的模式之一。View是UI執行緒。Presenter是View與Model之間的介面卡。UseCase或者Domain在Model層中,負責從實體獲取或載入資料。依賴規則如下


268450-901fc7b43f05763e.png

關鍵是,高層介面(一般為Activity或者Fragment)不知道底層介面的細節,或者更準確地說,高層介面不能,不應該,並且必須不瞭解底層介面的細節,是(面向)抽象的,並且是細節隱藏的


實現mvp的要點

  1. Activity只是負責處理事件監聽或者展示每個檢視元件
  2. 所有的業務邏輯必須委託給Presenter類
  3. 在MVP中,View和Presenter是一 一對應的(在MVVM中是一對多的)

示例見:http://www.jianshu.com/p/7567ed0d1853

其實Present負責業務,Activity只是實現了底層介面,但是沒有呼叫IView方法,具體呼叫方法在哪裡呼叫,應該是屬於業務層的,我們肯定交給Present去管理。


2200129-6e1e018c67f8fe55.jpg

相關文章