MVP 架構

元件:

StackOverflow 文件

  • Model 是負責域資料的介面(在 GUI 中顯示或以其他方式執行)
  • View 負責表示層(GUI)
  • 演示者是模型和檢視之間的中間人。它會對使用者在 View 上執行的操作做出反應,從模型中檢索資料,並對其進行格式化以便在 View 中顯示

元件職責:

模型 檢視 主持人
與 DB 層通訊 呈現資料 對模型執行查詢
舉辦適當的活動 接收活動 格式化來自 Model 的資料
非常基本的驗證邏輯 將格式化資料傳送到檢視
複雜的驗證邏輯

**** MVC 和 MVP 之間的差異

  • MVC 中的檢視與 Controller 緊密耦合,MVP 的 View 部分由 UIViews 和 UIViewController 組成
  • MVP View 儘可能笨,並且幾乎沒有邏輯(就像在 MVVM 中一樣),MVC View 有一些業務邏輯並且可以查詢模型
  • MVP 檢視處理使用者手勢並委託與 Presenter 的互動,在 MVC 中,Controller 處理手勢和命令模型
  • MVP 模式高度支援單元測試,MVC 支援有限
  • MVC Controller 有很多 UIKit 依賴項,MVP Presenter 沒有

優點:

  • MVP 使 UIViewController 成為 View 元件的一部分,它是愚蠢的,被動的……質量較小;
  • 由於檢視愚蠢,大多數業務邏輯都被封裝,這提供了極好的可測試性。可以引入模擬物件來測試域部分。
  • 分離的實體更容易保持頭腦,責任明顯分開。

缺點

  • 你將編寫更多程式碼。
  • 對於沒有經驗的開發人員或那些尚未使用該模式的人來說,這是一個障礙。