MVP 架構
元件:
- 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 元件的一部分,它是愚蠢的,被動的……質量較小;
- 由於檢視愚蠢,大多數業務邏輯都被封裝,這提供了極好的可測試性。可以引入模擬物件來測試域部分。
- 分離的實體更容易保持頭腦,責任明顯分開。
缺點
- 你將編寫更多程式碼。
- 對於沒有經驗的開發人員或那些尚未使用該模式的人來說,這是一個障礙。