1、VIPER
-
從字面意思來理解,VIPER 即 View Interactor Presenter Entity Router(展示器(視圖) 交互器 協調器 實體(數據) 路由器),迄今為止,划分責任的粒度是很好的選擇。VIPER 在責任划分層面進行 了迭代,VIPER 分為五個層次:
- 展示器 -- 包含 UI 層面的業務邏輯以及在交互器層面的方法調用。
- 交互器 -- 包括關於數據和網絡請求的業務邏輯,例如創建一個實體(數據),或者從服務器中獲取一些數據。為了實現這些功能,需要使用服務、管理器,但是他們並不被認為是 VIPER 架構內的模塊,而是外部依賴。
- 實體 -- 普通的數據對象,不屬於數據訪問層次,因為數據訪問屬於交互器的職責。
- 路由器 -- 用來連接 VIPER 的各個模塊。
-
1)VIPER 模式下的三個特性的分析:
- 任務均攤 -- 毫無疑問,VIPER 是任務划分中的佼佼者。
- 可測試性 -- 不出意外地,更好的分布性就有更好的可測試性。
- 易用性 -- 必須為很小功能的類寫出大量的口。
-
2)iOS VIPER 示意圖:
-
基本上,VIPER 模塊可以是一個屏幕或者用戶使用應用的整個過程。VIPER 是第一個通過路由器實現明確的地址導航模式。
-
當我們把 VIPER 和 MV(X) 系列作比較時,我們會在任務均攤性方面發現一些不同: Model 邏輯通過把實體作為最小的數據結構轉換到交互器中。Controller/Presenter/ViewModel 的 UI 展示方面的職責移到了 Presenter 中,但是並沒有數據轉換相關的操作。
-